2011-07-11 4 views
52

Possible en double:
XML Table layout? Two EQUAL-width rows filled with equally width buttons?Réglage de la largeur égale des colonnes dans la disposition de la table dans Android

J'utilise TableLayout pour afficher la liste des données en 4 colonnes.

Description du problème:

Je suis incapable de définir la largeur égale de toutes les 4 colonnes, qui sont dans mon TableLayout. Je mets mon code de mise en page, que je me sers ...

<TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="0"> 
     <TableRow> 
      <TextView android:text="table header1" android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textSize="10dip" android:textStyle="bold"/>  
      <TextView android:text="table header2" android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textSize="10dip" android:textStyle="bold"/> 
      <TextView android:text="table header3" android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textSize="10dip" android:textStyle="bold"/> 
      <TextView android:text="table header4" android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textSize="10dip" android:textStyle="bold"/>   
     </TableRow> 
    </TableLayout> 

Comment dois-je réécrire cette mise en page pour afficher 4 colonnes avec des tailles égales?

+1

http://stackoverflow.com/q/2865497/778427 –

+0

@Glendon Trullinger waoooo son fonctionnement. Merci. –

Répondre

143

Try this.

Il se résume à ajouter à votre android:stretchColumns="*" racine TableLayout et la mise android:layout_width="0dp" à tous les enfants dans vos TableRow s.

<TableLayout 
    android:stretchColumns="*" // Optionally use numbered list "0,1,2,3,..." 
> 
    <TableRow 
     android:layout_width="0dp" 
    > 
+15

Juste un petit mot ... J'ai aussi dû ajouter 'android: layout_weight =" 1 "' aux enfants de 'TableRows' pour que ça marche. – Asaf

+28

stretchColumns devrait être "*", pas 1 pour avoir toutes les colonnes de largeur égale. – Yevgeniy

+3

Cette solution fonctionne pour moi, mais je cherchais à le faire par programmation. J'ai utilisé 'setStretchAllColumns (true)' sur 'TableLayout' et' setLayoutParams (new TableRow.LayoutParams (0, TableRow.LayoutParams.WRAP_CONTENT)) 'sur chaque enfant' TableRow'. La prise de poids ne semblait pas nécessaire. –

63

changement de valeur de android:stretchColumns *

valeur 0 signifie colonne d'étirage 1. La valeur 1 signifie colonne tronçon 2 et ainsi de suite.

Value * signifie étirer toutes les colonnes

+8

Son ne fonctionne pas, si la colonne1 est le texte est plus, son expansion. – Palani

+1

Oui, cela ne fonctionne pas – Ted

+11

Il suffit de supprimer votre android: stretchColumns = "0" et ajouter android: layout_weight = "1" à tous les quatre et vous obtenez la sortie désirée. – user2779311

Questions connexes