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")
}
}
}