09.02.2017 Views

creez-des-applications-pour-android

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.3 Organiser son interface avec <strong>des</strong> layouts<br />

3.3.4 FrameLayout : un layout un peu spécial<br />

Ce layout est plutôt utilisé <strong>pour</strong> afficher une unique vue. Il peut sembler inutile comme ça, mais<br />

ne l’est pas du tout ! Il n’est <strong>des</strong>tiné à afficher qu’un élément, mais il est possible d’en mettre<br />

plusieurs dedans puisqu’il s’agit d’un ViewGroup. Si par exemple vous souhaitez faire un album<br />

photo, il vous suffit de mettre plusieurs éléments dans le FrameLayout et de ne laisser qu’une<br />

seule photo visible, en laissant les autres invisibles grâce à l’attribut <strong>android</strong>:visibility (cet<br />

attribut est disponible <strong>pour</strong> toutes les vues). Pareil <strong>pour</strong> un lecteur de PDF, il suffit d’empiler<br />

toutes les pages dans le FrameLayout et de n’afficher que la page actuelle, celle du <strong>des</strong>sus de la<br />

pile, à l’utilisateur. Cet attribut peut prendre trois valeurs :<br />

— visible (View.VISIBLE), la valeur par défaut.<br />

— invisible (View.INVISIBLE) n’affiche rien, mais est pris en compte <strong>pour</strong> l’affichage du<br />

layout niveau spatial (on lui réserve de la place).<br />

— gone (View.GONE) n’affiche rien et ne prend pas de place, un peu comme s’il n’était pas<br />

là.<br />

L’équivalent Java de cet attribut est public void setVisibility (int) avec comme paramètre<br />

une <strong>des</strong> valeurs entre parenthèses dans la liste ci-<strong>des</strong>sus. Quand il y a plusieurs éléments<br />

dans un FrameLayout, celui-ci les empile les uns au-<strong>des</strong>sus <strong>des</strong> autres, le premier élément du<br />

XML se trouvant en dernière position et le dernier ajouté tout au-<strong>des</strong>sus.<br />

3.3.5 ScrollView : faire défiler le contenu d’une vue<br />

Ne vous laissez pas bernez par son nom, cette vue est bel et bien un layout. Elle est par ailleurs<br />

un peu particulière puisqu’elle fait juste en sorte d’ajouter une barre de défilement verticale à<br />

un autre layout. En effet, si le contenu de votre layout dépasse la taille de l’écran, une partie du<br />

contenu sera invisible à l’utilisateur. De façon à rendre ce contenu visible, on peut préciser que la<br />

vue est englobée dans une ScrollView, et une barre de défilement s’ajoutera automatiquement.<br />

Ce layout hérite de FrameLayout, par conséquent il vaut mieux envisager de ne mettre qu’une<br />

seule vue dedans. Il s’utilise en général avec LinearLayout, mais peut être utilisé avec tous les<br />

layouts… ou bien <strong>des</strong> widgets ! Par exemple :<br />

<br />

<br />

<br />

<br />

<br />

<br />

[[attention]] | Attention cependant, il ne faut pas mettre de widgets qui peuvent déjà défiler dans<br />

une ScrollView, sinon il y aura conflit entre les deux contrôleurs et le résultat sera médiocre.<br />

Nous n’avons pas encore vu de widgets de ce type, mais cela ne saurait tarder.<br />

137

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!