Académique Documents
Professionnel Documents
Culture Documents
Partager cet article Temps estimé pour la lecture de cet article : 42 min
Aujourd’hui, j’aimerais parler des différents layouts que l’on trouve sous Android. Ces derniers permettent
de réaliser l’agencement des différents éléments de notre interface graphique. On trouve principalement
trois types de layouts :
LinearLayout : permet de positionner nos éléments sur une ligne ou sur une colonne, on peut alors
choisir la direction.
RelativeLayout : permet de définir la position des éléments par rapport aux éléments parent.
GridLayout : permet d’organiser son interface sous forme d’un tableau.
Pour déclarer nos layouts, on utilise bien souvent des fichiers XML. Pour plus d’informations sur d’autres
layouts, je vous conseille d’aller voir la documentation qui est très bien faites.
Le layout LinearLayout
Les conteneurs ou les widgets appartenant à ce Layout sont alignés en ligne soit horizontalement ou
verticalement.
1. Orientation du Layout
android:orientation=’horizontal/vertical’
Cette option spécifie la façon dont seront alignés les éléments contenus dans ce Layout.
Tous les widgets qui composent un LinearLayout doivent fournir une taille, grâce aux deux propriétés
suivantes : android:layout_width et android:layout_height
Une taille fixe : par exemple 50px (pixels). Donc quelque soit la taille de l’écran, l’élément occupera
exactement 50px.
fill_parent : Dans ce cas on demande au composant d’occuper tout l’espace disponible chez son
conteneur parent (après le placement des autres widgets).
wrap_content : Pour demander au Widget d’occuper une taille naturelle (la taille de son contenu
pour le texte par exemple). S’il est trop gros par rapport à la taille disponible. Android s’occupera par
exemple de couper le texte s’il n’y a plus de place.
Dans un LinearLayout les éléments sont alignés de gauche à droite et de haut en bas. Donc la question qui
se pose est comment faire si l’on veut placer notre élément tout en bas ou a droite. La réponse se trouve
dans la gravité (android:layout_gravity).
Les gravités les plus couramment utilisées sont left, center_horizontal, top, bottom, right, pour
respectivement aligner les éléments à gauche, au centre, en haut, en bas et à droite. On peut aussi utiliser
center_vertical pour centrer verticalement l’élément.
Prenons un exemple, imaginez que vous avez 2 boutons en colonne et que vous voulez que chacun occupe
tout l’espace disponible.
Si on leur affecte la même valeur au poids (android:layout_weight), l’espace libre sera partagé
équitablement entre les deux. Si l’on met une valeur 1 au premier et 2 au second, le deuxième prendra
deux fois plus d’espace libre que le premier (par défaut la valeur du poids est de 0).
Vous pouvez aussi utiliser des pourcentages, mais dans ce cas assurez-vous bien que la somme des
pourcentages ne dépasse pas 100%.
5. Espacement
Les différents éléments que vous créez sont par défaut serrés les uns contre les autres. Vous pouvez
augmenter l’espacement à l’aide de la propriété android:padding (padding top, left, right et bottom). La
valeur précise l’espace situé entre le contour de l’élément et son contenu réel. Par exemple pour un bouton
c’est l’espacement entre le contour du bouton et son texte.
Linearlayout – Boutons
Prenons un exemple simple, on veut positionner deux boutons en bas de l’écran, pour ce faire, on utilise :
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:paddingBottom="@dimen/activity_vertical_margin"
6 android:paddingLeft="@dimen/activity_horizontal_margin"
7 android:paddingRight="@dimen/activity_horizontal_margin"
8 android:paddingTop="@dimen/activity_vertical_margin"
9 tools:context="com.example.layouts.MainActivity" >
10
11 <TextView
12 android:layout_width="wrap_content"
13 android:layout_height="wrap_content"
14 android:layout_centerHorizontal="true"
15 android:layout_centerVertical="true"
16 android:text="LinearLayout - 2 Buttons : 50% width " />
17
18 <LinearLayout
19 android:id="@+id/buttons"
20 android:orientation="horizontal"
21 android:layout_width="fill_parent"
22 android:layout_height="wrap_content"
23 android:layout_alignLeft="@+id/result"
24 android:layout_alignParentBottom="true" >
25
26 <Button
27 android:id="@+id/btn"
28 android:layout_width="fill_parent"
29 android:layout_height="wrap_content"
30 android:layout_weight="50"
31 android:text="Bouton 1" />
32
33 <Button
34 android:id="@+id/btn2"
35 android:layout_width="fill_parent"
36 android:layout_height="wrap_content"
37 android:layout_weight="50"
38 android:text="Bouton 2" />
39 </LinearLayout>
40
41 </RelativeLayout>
Linearlayout – Menu
Un autre exemple bien utile pour un menu vertical dont trois images se séparent l’écran avec une hauteur
de 33.333…% chacun :
Xml du menu
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="match_parent"
3 android:layout_height="match_parent"
4 android:background="#fff"
5 android:orientation="vertical"
6 android:weightSum="3">
7
8 <ImageButton
9 android:id="@+id/imageButton3"
10 android:layout_width="wrap_content"
11 android:layout_height="0dp"
12 android:layout_weight="1"
13 android:src="@drawable/img" />
14
15 <ImageButton
16 android:id="@+id/imageButton1"
17 android:layout_width="wrap_content"
18 android:layout_height="0dp"
19 android:layout_weight="1"
20 android:src="@drawable/img2" />
21
22 <ImageButton
23 android:id="@+id/imageButton2"
24 android:layout_width="wrap_content"
25 android:layout_height="0dp"
26 android:layout_weight="1"
27 android:src="@drawable/img3" />
28
29 </LinearLayout>
RelativeLayout
Le principe du RelativeLayout est de placer les éléments selon d’autres éléments du conteneur.
On peut également positionner un élément par rapport à un autre grâce à son identificateur (son ID).
A l’utilisation : @id/idElem
Page de login
Voyons maintenant un exemple du RelativeLayout combiné avec le LinearLayout, afin de réaliser une page
de login. Tout d’abord le résultat :
Relativelayout – Login
Cet exemple est un peu plus compliqué que les autres, regardons dans le détail ce qui se passe :
Vous, vous en serez doutés pour les trois boutons alignés on va utiliser un LinearLayout. On applique
un padding de 10 pixels sur celui-ci et on définir une couleur de fond. Le LinearLayout est centré
grâce à l’option centerInParent
On applique une marge pour pouvoir espacer les boutons, le padding permet d’aérer notre bouton.
Enfin on applique un fond pour chacun d’eux.
On dessine un fond sur notre RelativeLayout (notre conteneur principal) grâce à l’option
android:background.
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:paddingBottom="@dimen/activity_vertical_margin"
6 android:paddingLeft="@dimen/activity_horizontal_margin"
7 android:paddingRight="@dimen/activity_horizontal_margin"
8 android:paddingTop="@dimen/activity_vertical_margin"
9 android:background="@drawable/back">
10
11 <LinearLayout
12 android:orientation="vertical"
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 android:layout_centerInParent="true"
16 android:background="@drawable/linearlayout_bg"
17 android:padding="10dp"
18 >
19
20 <Button
21 android:id="@+id/btnGplus"
22 style="@style/AppBaseTheme"
23 android:layout_width="match_parent"
24 android:layout_height="wrap_content"
25 android:layout_margin="4dp"
26 android:padding="10dp"
27 android:text="Sign in with Google+"
28 android:background="#DD4B39"
29 android:textColor="#FFFFFF" />
30
31 <Button
32 android:id="@+id/btnFb"
33 android:layout_width="match_parent"
34 android:layout_height="wrap_content"
35 android:layout_margin="4dp"
36 android:padding="10dp"
37 android:text="Sign in with Twitter"
38 android:background="#39A6CE"
39 android:textColor="#FFFFFF" />
40
41 <Button
42 android:id="@+id/btnTwitter"
43 android:layout_width="match_parent"
44 android:layout_height="wrap_content"
45 android:layout_margin="4dp"
46 android:padding="10dp"
47 android:text="Sign in with Faceboook"
48 android:background="#46629E"
49 android:textColor="#FFFFFF" />
50 </LinearLayout>
51
52 </RelativeLayout>
GridLayout
Le GridLayout permet de placer des éléments sur une grille, très pratique pour des tableaux par exemple
ici, pour un morpion. Deux options s’avère nécessaire : android:columnCount et android:rowCount qui
correspondent au nombre de lignes et de colonnes sur notre grille.
Gridlayout – tableau
L’exemple de mise en place de GridLayout avec le Morpion
1 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:id="@+id/GridLayout1"
4 android:layout_width="wrap_content"
5 android:layout_height="wrap_content"
6 android:columnCount="3"
7 android:rowCount="3"
8 android:layout_gravity="center"
9 android:orientation="horizontal">
10
11 <Button
12 android:id="@+id/button1"
13 android:text="X" />
14
15 <Button
16 android:id="@+id/button2"
17 android:text="O" />
18
19 <Button
20 android:id="@+id/button3"
21 android:text="X" />
22
23 <Button
24 android:id="@+id/button4"
25 android:text="X" />
26
27 <Button
28 android:id="@+id/button5"
29 android:text="O" />
30
31 <Button
32 android:id="@+id/button6"
33 android:text="X" />
34
35 <Button
36 android:id="@+id/button7"
37 android:text="X" />
38
39 <Button
40 android:id="@+id/button8"
41 android:text="O" />
42
43 <Button
44 android:id="@+id/button9"
45 android:text="O" />
46
47 </GridLayout>
Voilà j’espère que mon article vous aura permis d’avoir de quoi bien démarrer avec les layouts d’android.
Articles similaires
01/10/2020 01/09/2020