Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 7
Conteneurs 59
Fils de TableLayout qui ne sont pas des lignes
Généralement, les seuls fils directs de TableLayout sont des éléments TableRow. Cependant, vous pouvez également placer des widgets entre les lignes. En ce cas, TableLayout
se comporte un peu comme un conteneur LinearLayout ayant une orientation verticale.
Les largeurs de ces widgets seront automatiquement fixées à fill_parent pour remplir le
même espace que la ligne la plus longue.
Un cas d’utilisation de cette configuration consiste à se servir d’un widget View (
android:layout_height = "2px" android:background = "#0000FF" />) pour créer
une barre de séparation bleue de 2 pixels et de la même largeur que le tableau.
Réduire, étirer et refermer
Par défaut, la taille de chaque colonne sera la taille "naturelle" de son widget le plus large
(en tenant compte des widgets qui s’étendent sur plusieurs colonnes). Parfois, cependant,
cela ne donne pas le résultat escompté et il faut alors intervenir plus précisément sur le
comportement de la colonne.
Pour ce faire, vous pouvez utiliser la propriété android:stretchColumns de l’élément
TableLayout, dont la valeur peut être un seul numéro de colonne (débutant à zéro) ou une
liste de numéros de colonnes séparés par des virgules. Ces colonnes seront alors étirées
pour occuper tout l’espace disponible de la ligne, ce qui est utile lorsque votre contenu est
plus étroit que l’espace restant.
Inversement, la propriété android:shrinkColumns de TableLayout, qui prend les
mêmes valeurs, permet de réduire la largeur effective des colonnes en découpant leur
contenu en plusieurs lignes (par défaut, le contenu des widgets n’est pas découpé).
Cela permet d’éviter qu’un contenu trop long pousse certaines colonnes à droite de
l’écran.
Vous pouvez également tirer parti de la propriété android:collapseColumns de TableLayout, en indiquant là aussi un numéro ou une liste de numéros de colonnes. Celles-ci
seront alors initialement "refermées", ce qui signifie qu’elles n’apparaîtront pas, bien
qu’elles fassent partie du tableau. À partir de votre programme, vous pouvez refermer ou
réouvrir les colonnes à l’aide de la méthode setColumnCollapsed()du widget TableLayout. Ceci permet aux utilisateurs de contrôler les colonnes importantes qui doivent
apparaître et celles qui peuvent être cachées car elles ne leur sont pas utiles.
En outre, les méthodes setColumnStretchable() et setColumnShrinkable() permettent
respectivement de contrôler l’étirement et la réduction des colonnes en cours d’exécution.
Exemple
En combinant les fragments XML présentés dans cette section, on produit une grille de
widgets ayant la même forme que celle de l’exemple RelativeLayoutDemo, mais avec
Livre Android.book Page 59 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 7
Conteneurs 59
Fils de TableLayout qui ne sont pas des lignes
Généralement, les seuls fils directs de TableLayout sont des éléments TableRow. Cependant, vous pouvez également placer des widgets entre les lignes. En ce cas, TableLayout
se comporte un peu comme un conteneur LinearLayout ayant une orientation verticale.
Les largeurs de ces widgets seront automatiquement fixées à fill_parent pour remplir le
même espace que la ligne la plus longue.
Un cas d’utilisation de cette configuration consiste à se servir d’un widget View (
une barre de séparation bleue de 2 pixels et de la même largeur que le tableau.
Réduire, étirer et refermer
Par défaut, la taille de chaque colonne sera la taille "naturelle" de son widget le plus large
(en tenant compte des widgets qui s’étendent sur plusieurs colonnes). Parfois, cependant,
cela ne donne pas le résultat escompté et il faut alors intervenir plus précisément sur le
comportement de la colonne.
Pour ce faire, vous pouvez utiliser la propriété android:stretchColumns de l’élément
TableLayout, dont la valeur peut être un seul numéro de colonne (débutant à zéro) ou une
liste de numéros de colonnes séparés par des virgules. Ces colonnes seront alors étirées
pour occuper tout l’espace disponible de la ligne, ce qui est utile lorsque votre contenu est
plus étroit que l’espace restant.
Inversement, la propriété android:shrinkColumns de TableLayout, qui prend les
mêmes valeurs, permet de réduire la largeur effective des colonnes en découpant leur
contenu en plusieurs lignes (par défaut, le contenu des widgets n’est pas découpé).
Cela permet d’éviter qu’un contenu trop long pousse certaines colonnes à droite de
l’écran.
Vous pouvez également tirer parti de la propriété android:collapseColumns de TableLayout, en indiquant là aussi un numéro ou une liste de numéros de colonnes. Celles-ci
seront alors initialement "refermées", ce qui signifie qu’elles n’apparaîtront pas, bien
qu’elles fassent partie du tableau. À partir de votre programme, vous pouvez refermer ou
réouvrir les colonnes à l’aide de la méthode setColumnCollapsed()du widget TableLayout. Ceci permet aux utilisateurs de contrôler les colonnes importantes qui doivent
apparaître et celles qui peuvent être cachées car elles ne leur sont pas utiles.
En outre, les méthodes setColumnStretchable() et setColumnShrinkable() permettent
respectivement de contrôler l’étirement et la réduction des colonnes en cours d’exécution.
Exemple
En combinant les fragments XML présentés dans cette section, on produit une grille de
widgets ayant la même forme que celle de l’exemple RelativeLayoutDemo, mais avec
Livre Android.book Page 59 Dimanche, 8. novembre 2009 12:23 12
