Découvrir le développement d'applications avec Android 5

Utiliser le LinearLayout

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Construisez des interfaces rapidement sous forme de listes verticales ou horizontales grâce au LinearLayout
05:44

Transcription

Voyons maintenant un autre view group, celui qui s'appelle le LinearLayout. Il est légèrement plus évolué que le FrameLayout, mais reste très simple à utiliser. Je vais remplacer FrameLayout par LinearLayout, et donc là, si je lance sans rien changer d'autre, on va voir ce qu'il se passe. J'ai juste mis Linear, à la place de FrameLayout. Alors là, on voit quelque chose qui ne colle plus du tout. Déjà, il les a mis côte à côte, mais en plus celui-ci est décalé. Alors le décalage qu'il y a ici, c'est à cause du marginTop qu'on avait mis tout à l'heure, donc ça on va pouvoir l'enlever. Mais en plus de ça, par défaut, si vous ne lui précisez pas, LinearLayout, il va aligner les éléments les uns après les autres. Si vous ne lui précisez rien, il le fera de gauche à droite. Ça veut dire que, il a d'abord mis le label, qui est ici. Il lui a donné la largeur qu'il demandait, puis la hauteur qu'il demandait. Et ensuite, il a placé le bouton, alors le bouton, on voulait match parent, sauf qu'il y a déjà de la place qui a été prise par lui, donc il n'y en a pas assez. C'est pour ça que je vous parlais tout à l'heure de conditionnel. Il aimerait être aussi grand que le parent mais il est pas tout seul, et c'est pas le premier à avoir demandé. C'est toujours : premier arrivé, premier servi. Donc, comme il a pas demandé en premier, il n'est pas prioritaire, et donc il a toute la place restante, mais il n'est pas aussi grand que le parent, comme il voudrait. Par contre, au niveau de la hauteur, il respecte bien son contenu, il n'y a pas de souci. Et c'est d'ailleurs lui qui pousse la taille du LinearLayout, parce que finalement, lui est beaucoup plus petit. Donc si je souhaite changer la donne, en disant : j'aimerais plutôt qu'il soit de gauche à droite, je veux qu'il soit de haut en bas. Il suffit d'ajouter un paramètre dans le LinearLayout, Orientation : on a le choix entre horizontal ou vertical, si je relance. Voilà, il met d'abord cet élément-là, ensuite pour chaque élément suivant, il va sauter une ligne et le mettre à la ligne suivante. Encore une fois, si par exemple, lui ... demande 30 DP, donc il reste de la place pour les autres. Si par contre, je dis match parent, ici, que j'essaie de lancer, On ne voit plus du tout le bouton. Pourquoi ? Parce que le TextView est en premier, il est prioritaire, et il demande à être aussi grand que le parent, il l'a. Il lui demande juste après à être aussi grand que ce qu'il a besoin, mais il l'aura pas, parce qu'il n'y a déjà plus de place disponible. ... (frappe... content)... Sachant qu'on peut imbriquer, c'est à dire que rien n'empêche ici d'ajouter un autre LinearLayout horizontal qui contrôlerait les infos d'une ligne, dans laquelle on mettrait plusieurs boutons, ou autre. Donc, il faut savoir qu'on peut imbriquer des layouts les uns dans les autres pour créer la mise en page que l'on souhaite sur toute la vue. Il y a un paramètre un petit peu spécifique, sur LinearLayout. Et je vais essayer de vous expliquer ce que c'est. C'est celui qui s'appelle Layout_Weight. Donc weight, ça veut dire poids. Quand on voit cet attribut, la première chose qu'on pense, c'est que le poids va permettre de compenser ce que je vous ai montré avant. Si par exemple, on a ces deux éléments, tous les deux font 40 dp chacun, il y a en un qui a un poids de 1, et l'autre qui par défaut , si vous précisez pas, il a un poids de 0. On peut supposer que celui de droite, aura plus de poids. Et donc s'il y avait un problème de manque de place, ce serait lui qui gagnerait. Ce n'est absolument pas le cas. Le principe de cet attribut, c'est pour attribuer l'espace restant non utilisé. Ça veut dire que dans ce contexte-là, toute la partie de droite qui reste, puisqu'ils ont demandé chacun à faire 40 dp, et que le parent est visiblement plus grand, ça va en fait permettre de répartir l'espace restant proportionnellement au poids de chacun. Donc si vous ne mettez aucun poids, et bien ils feront juste 40 dp chacun. Mais comme là, on a mis un poids de 1 sur l'un des deux, l'espace restant va lui être donné. Donc automatiquement, il va être plus grand. Si je veux avoir deux éléments qui font pile la même taille, l'idéal, c'est de leur donner une taille de 0 et le même poids à chacun. Donc, au début, ils feront 0. Et il va rester tout l'espace de libre, et tout l'espace de libre sera réparti également, de façon proportionnelle entre les deux. Si vous en voulez qui est deux fois plus grand que l'autre, et bien vous mettez 0 dp, par exemple, et vous mettez un poids de 2 sur l'un et un poids de 1 sur l'autre. Donc il sera deux fois plus grand. Il va en gros, répartir en deux tiers - un tiers, l'espace. Dans notre exemple, je vais vous montrer ce que ça peut donner. Si ici, je remets mon match parent sur la hauteur, pour montrer quelque chose, Imaginons que je mette ici, un poids... ... de 0... pour dire, il n'est pas important. ... et qu'ici, je lui donne... ... un poids de 1... Ou de 10, peu importe, juste pour montrer qu'il a un poids très important, même si ça n'a pas trop de valeur, ça suffirait. D'après vous, qu'est-ce qui va se passer? Est-ce que le bouton va réussir à avoir le minimum de sa taille ? Va être plus grand que le TextView ? ou alors ne sera pas du tout visible ? Je vous laisse y réfléchir une ou deux secondes, le temps que j'appuie. Ce qui va se passer en faisant ça, ça ne va absolument rien changer. Je vais relancer, et on voit qu'on a toujours le label qui écrase le bouton qui n'a plus assez de place. Alors qu'il a un poids inférieur. Alors c'est justement ça, le piège avec cet attribut. On a l'impression que ça va lui donner plus de force par rapport à lui, Et qu'il va pouvoir reprendre le dessus, ce n'est pas le cas. C'est uniquement pour l'espace restant. Ça veut dire que si, ici, on laisse un wrap_content par exemple, là, cette fois-ci, lui, il fera juste la taille qu'il veut et lui, au lieu de faire un wrap-content, il fera un wrap-content + 100 % de tout ce qui reste. On va le lancer. Voilà, donc on voit notre wrap_content qui marche ici. Et le bouton qui s'est agrandi, jusqu'à toucher le bas. Si ici, je lui donne 5 en poids, celui-ci fera un wrap_content... plus un tiers de l'espace restant, et lui, il fera wrap_content, plus deux tiers de l'espace restant. Ça fait un peu bizarre comme mesure, mais c'est pour vous montrer le principe. Voilà, donc une fois qu'on a compris, c'est très simple. C'est juste qu'on a tendance à croire quelque chose de différent au début, Et je trouvais important de préciser ce concept.

Découvrir le développement d'applications avec Android 5

Développez des applications mobiles pour Android. Créez un projet de A à Z sous Android Studio, de l’installation du kit de développement, jusqu’à sa publication sur le Play Store.

3h17 (39 vidéos)
Aucun commentaire n´est disponible actuellement
Logiciel :
Android Android 5
Spécial abonnés
Date de parution :17 mars 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !