Dans ce chapitre, nous aborderons les sujets suivants:
► Définir et gonfler une mise en page
► Utilisation de RelativeLayout
► Utilisation de LinearLayout
► Création de tables - TableLayout et GridLayout
► Utilisation de ListView, GridView et d'adaptateurs
► Modification des propriétés de disposition pendant l'exécution
► Optimisation des mises en page avec la visionneuse de la hiérarchie
Dans Android, l'interface utilisateur est définie dans une mise en page. Une mise en page peut être déclarée en XML ou créée dynamiquement dans le code. (Il est recommandé de déclarer la mise en page en XML plutôt qu'en code afin de conserver la couche de présentation distincte de la couche d'implémentation.) Une mise en page peut définir un objet Listitem individuel, un fragment ou même toute l'activité. Les fichiers de mise en page sont stockés dans le dossier / res / layout et référencés dans le code avec l'identificateur suivant: R.layout. <Filename_without_extension>.
Android fournit une variété utile de classes de mise en page qui contiennent et organisent des éléments individuels d'une activité (tels que des boutons, des cases à cocher et d'autres vues). L'objet ViewGroup est un objet conteneur qui sert de classe de base pour la famille de classes Layout d'Android. Les vues placées dans une mise en page forment une hiérarchie, la mise en page la plus haute étant le parent.
Android fournit plusieurs types de mise en page intégrés conçus pour des objectifs spécifiques, tels que RelativeLayout, qui permet de positionner les vues par rapport à d'autres éléments. LinearLayout peut empiler les Vues ou les aligner horizontalement, selon l'orientation spécifiée. Le TableLayout peut être utilisé pour disposer une grille de Vues. Dans différentes dispositions, nous pouvons également justifier les Vues avec Gravité et fournir une taille proportionnelle avec le contrôle du poids. Les dispositions et viewGroups peuvent être imbriqués les uns dans les autres pour créer des configurations complexes. Plus d'une douzaine d'objets Layout différents sont fournis pour la gestion des widgets, des listes, des tableaux, des galeries et d'autres formats d'affichage. De plus, vous pouvez toujours dériver des classes de base pour créer vos propres dispositions personnalisées.
Lorsque vous utilisez l'assistant Android Studio pour créer un nouveau projet, il crée automatiquement le fichier res / layout / activity_main.xml (comme illustré dans la capture d'écran suivante). Il gonfle ensuite le fichier XML dans le rappel onCreate () avec setContentView (R.layout. Activity_main).
Pour cette recette, nous allons créer deux mises en page légèrement différentes et passer d'un bouton à l'autre.
Se préparer
Créez un nouveau projet dans Android Studio et appelez-le InflateLayout. Une fois le projet créé, développez le dossier res / layout pour pouvoir modifier le fichier activity_main.xml.
Comment faire...
1. Modifiez le fichier res / layout / activity_main.xml afin qu'il contienne un bouton
défini ici:
<Bouton
android: id = "@ + id / buttonLeft"
android: layout_width = "wrap_content"
android: layout_height = "wrap_content"
android: text = "Bouton gauche"
android: layout_centerVertical = "vrai"
android: layout_alignParentLeft = "vrai"
android: onClick = "onClickLeft" />
2. Faites maintenant une copie de activity_main.xml et appelez-la activity_main2.xml.
Changez le bouton pour qu'il corresponde aux éléments suivants:
<Bouton
android: id = "@ + id / buttonRight"
android: layout_width = "wrap_content"
android: layout_height = "wrap_content"
android: text = "Bouton droit"
android: layout_centerVertical = "vrai"
android: layout_alignParentRight = "vrai"
android: onClick = "onClickRight" />
3. Ouvrez MainActivity.java et ajoutez les deux méthodes suivantes pour gérer le
clics sur le bouton:
public void onClickLeft (Voir la vue) {
setContentView (R.layout.activity_main2);
}
public void onClickRight (Voir la vue) {
setContentView (R.layout.activity_main);
}
4. Exécutez cette application sur un périphérique ou un émulateur pour le voir en action.
Comment ça marche...
La clé ici est l'appel à setContentView (), que nous avons rencontré auparavant dans le code onCreate () autogénéré. Transmettez simplement un ID de mise en page à setContentView () et cela gonfle automatiquement la mise en page.
dzH
Ce code est destiné à rendre le concept facile à comprendre, mais serait excessif pour simplement changer la propriété d'un bouton (dans cet exemple, nous pourrions simplement changer l'alignement sur le bouton clic). L'initialisation de la mise en page est généralement nécessaire une seule fois, dans la méthode onCreate (), mais il arrive que vous souhaitiez gonfler manuellement une mise en page, comme nous l'avons fait ici. (Si vous manipulez manuellement les changements d'orientation, ce serait un bon exemple.)
Il y a plus...
En plus d'identifier une mise en page à l'aide d'un ID de ressource, comme nous l'avons fait ici, setContentView () peut également prendre une vue comme argument, par exemple:
findViewByld (R.id.myView)
setContentView (myView);
Voir également
► Comme mentionné précédemment, reportez-vous à la rubrique Fragment, au Chapitre 5, Exploration des fragments, AppWidgets et à l'interface utilisateur du système, pour la méthode alternative permettant de modifier la disposition de l'écran.