Sobes.tech
Middle

Comment implémenter une interface utilisateur dans Android sans utiliser XML?

sobes.tech IA

Réponse de l'IA

Nous pouvons utiliser du code Kotlin/Java pour créer et ajouter des View et ViewGroup de manière programmatique.

Exemple de création de TextView :

// Création de TextView dans le code
val textView = TextView(context)
// Définir les propriétés
textView.text = "Bonjour, le monde!"
textView.textSize = 20f
textView.setTextColor(Color.BLACK)
textView.gravity = Gravity.CENTER

// Ajouter TextView à ViewGroup (par exemple, LinearLayout)
val linearLayout = LinearLayout(context)
linearLayout.orientation = LinearLayout.VERTICAL
linearLayout.addView(textView)

// Définir le layout racine
setContentView(linearLayout)

Pour des interfaces plus complexes, on utilise la "création" de layout par programmation, en combinant différents ViewGroup et View.

Avantages :

  • Création dynamique de l'UI basée sur des données ou de la logique.
  • Contrôle plus précis sur la création des composants.
  • Peut être légèrement plus rapide, car il n'y a pas d'analyse XML.

Inconvénients :

  • Le code devient moins lisible et plus volumineux pour des layouts complexes.
  • Il est difficile de visualiser le layout sans lancer l'application.
  • Absence d'outils de prévisualisation pratiques, comme en XML.

Dans les approches modernes, comme Jetpack Compose (qui utilise Kotlin), la création de l'UI est entièrement déclarative dans le code, remplaçant XML.

Voici un exemple avec Jetpack Compose :

// Dans une fonction @Composable, on définit l'UI
@Composable
fun Greeting(name: String) {
    Text(text = "Bonjour, $name!")
}

// On utilise cette fonction dans une Activity
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Greeting("Monde")
        }
    }
}