Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
114 L’art du développement Android
Composants
Pour mettre en place les onglets dans une vue, vous avez besoin des widgets et des conteneurs
suivants :
● TabHost est le conteneur général pour les boutons et les contenus des onglets.
● TabWidget implémente la ligne des boutons des onglets, qui contient les labels et,
éventuellement, des icônes.
● FrameLayout est le conteneur des contenus des onglets : chaque contenu d’onglet est
un fils du FrameLayout.
Cette approche ressemble à celle de XUL, utilisée par Mozilla : les éléments tabbox, tabs et
tabpanels de XUL correspondent respectivement à TabHost, TabWidget et FrameLayout.
Idiosyncrasies
La version actuelle d’Android exige de respecter les règles suivantes pour que ces trois
composants puissent fonctionner de concert :
● L’identifiant android:id du TabWidget doit être @android:id/tabs.
● Vous devez réserver un espace de remplissage dans le FrameLayout pour les boutons
des onglets.
● Si vous souhaitez utiliser TabActivity, l’identifiant android:id du TabHost doit être
@android:id/tabhost.
TabActivity, comme ListActivity, enveloppe un motif d’interface graphique classique
(une activité composée entièrement d’onglets) dans une sous-classe d’activité. Vous n’en
avez pas nécessairement besoin – une activité classique peut très bien utiliser également
des onglets.
Pour une raison que j’ignore, TabWidget ne semble pas allouer son espace dans le conteneur TabHost ; en d’autres termes, quelle que soit la valeur de la propriété
android:layout_height de TabWidget, FrameLayout l’ignore et le place au-dessus du
TabHost, provoquant ainsi le masquage des boutons des onglets par leurs contenus. Par
conséquent, vous devez réserver assez d’espace dans FrameLayout (avec
android:paddingTop) pour "pousser" le contenu des onglets en dessous des boutons.
En outre, TabWidget semble toujours se dessiner en laissant de la place pour des icônes, même
si l’on n’en utilise pas. Avec cette version du kit de développement, vous devez donc réserver au moins 62 pixels ou éventuellement plus en fonction des icônes que vous utilisez.
Voici le fichier de description d’une activité utilisant des onglets, tiré du projet Fancy/Tab :

android:orientation="vertical"
android:layout_width="fill_parent"
Livre Android.book Page 114 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 129/391

Suivant