Sobes.tech
Middle

Jak zaimplementować interfejs użytkownika w Android bez użycia XML?

sobes.tech AI

Odpowiedź od AI

Możemy używać kodu Kotlin/Java do programowego tworzenia i dodawania View i ViewGroup.

Przykład tworzenia TextView:

// Tworzenie TextView w kodzie
val textView = TextView(context)
// Ustawianie właściwości
textView.text = "Witaj, świecie!"
textView.textSize = 20f
textView.setTextColor(Color.BLACK)
textView.gravity = Gravity.CENTER

// Dodanie TextView do ViewGroup (np. LinearLayout)
val linearLayout = LinearLayout(context)
linearLayout.orientation = LinearLayout.VERTICAL
linearLayout.addView(textView)

// Ustawienie layoutu głównego
setContentView(linearLayout)

Dla bardziej skomplikowanych interfejsów używa się "programowego" tworzenia layoutu, łącząc różne ViewGroup i View.

Zalety:

  • Dynamiczne tworzenie UI na podstawie danych lub logiki.
  • Bardziej precyzyjna kontrola nad tworzeniem komponentów.
  • Teoretycznie może być nieco szybsze, ponieważ nie ma parsowania XML.

Wady:

  • Kod staje się mniej czytelny i bardziej rozbudowany dla skomplikowanych layoutów.
  • Trudno zwizualizować layout bez uruchomienia aplikacji.
  • Brak wygodnych narzędzi podglądu, jak w XML.

W nowoczesnych podejściach, takich jak Jetpack Compose (używa Kotlin), tworzenie UI jest całkowicie deklaratywne w kodzie, zastępując XML.

Oto przykład w Jetpack Compose:

// W funkcji @Composable definiujemy UI
@Composable
fun Greeting(name: String) {
    Text(text = "Witaj, $name!")
}

// Używamy tej funkcji w Activity
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Greeting("Świecie")
        }
    }
}