2011-05-01 4 views
2

J'ai une disposition de table comme indiqué. J'ai beaucoup de lignes. J'ai utilisé android: strechcolumns = "1" pour étirer la deuxième colonne de chaque rangée. C'est le cas partout.Mise en page dans android -Rajustement de la taille

Mais dans la cinquième rangée j'ai 2 champs. Je veux qu'ils occupent l'espace égal. La taille de rangée devrait être identique que celle de la rangée précédente. Je veux que la taille globale des rangées reste la même que celle sur le screeshot.Aussi j'ai indiqué dans la capture d'écran la limite dans laquelle toutes les lignes devraient se trouver.

Comment cela peut-il être fait?

<TableRow> 
    <TextView 
     android:gravity="right" 
     android:paddingTop="10dip" 
     /> 
    <Spinner 
    android:id="@+id/depot_name_spinner"/> 
</TableRow> 

<TableRow> 
    <TextView 
    android:text="@string/product_name" 
    android:paddingTop="10dip" 
    android:gravity="right"/> 
    <Spinner 
    android:id="@+id/product_name_spinner" 
    /> 
</TableRow> 

<TableRow> 
    <TextView 
     android:text="@string/date" 
     android:gravity="right" /> 
    <Button 
    android:id="@+id/date_button" /> 
</TableRow> 

<TableRow> 
    <TextView 
     android:text="@string/measure_ltr" 
     android:gravity="right" 

     /> 
    <EditText 
    android:id="@+id/ltr_text" 
    android:layout_width="50dip"/> 
    <TextView 
     android:text="@string/measure_qts" 
     android:gravity="right" 
    /> 
     <EditText 

    android:id="@+id/qts_text" 
    /> 
</TableRow> 

enter image description here

Merci

Répondre

2

Vous pouvez ajouter non seulement TableRow à la table. Utilisez simplement un simple LinearLayout et mettez tout le contenu brut dedans. Je pense que cela doit résoudre votre problème.

EDIT: Vous pouvez également ajouter le LinearLayout avec tous les widgets à un TableRow et mis LinearLayout « s android:layout_span=2:

<TableRow> 
    <LinearLayout 
     android:layout_span="2"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/measure_ltr" 
      android:gravity="right"/> 
     <EditText 
      android:id="@+id/ltr_text" 
      android:layout_width="50dip" 
      android:layout_height="wrap_content"/> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/measure_qts" 
      android:gravity="right"/> 
     <EditText 
      android:id="@+id/qts_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
    </LinearLayout> 
</TableRow> 

Je ne l'ai pas essayé, mais nous espérons que cela fonctionnera.

+0

Je l'utilise pour le moment mais je ne suis pas capable de reproduire la hauteur exacte de la ligne précédente. Connaissez-vous la taille de plongeon par défaut pour les lignes que j'ai construites en utilisant des colonnes strech dans la rangée du tableau? – rogerstone

+0

Je ne sais pas comment obtenir la hauteur par défaut de 'TableRow'. Mais j'ai ajouté une autre solution à la réponse. – Michael

+0

Vérifié sur le morceau de code que vous m'avez donné.Il semble que Android: span n'est pas disponible pour la mise en page linéaire.J'ai vérifié les docs .Il ne est pas là.Le xml me donne une erreur. – rogerstone

1

Essayez d'utiliser android: weight. Cela divisera l'espace restant une fois que la mise en page est disposée dans la façon dont vous voulez. Je veux dire que vous pouvez définir la proportion d'espace que chacun de vos points de vue devrait utiliser. Regardez dans cet exemple ci-dessous.

<TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> 
    <TableRow> 

    <LinearLayout android:layout_width="fill_parent" android:orientation="horizontal" 
        android:layout_height="wrap_content" android:weightSum="100">  // Mention Weightsum as 100 so that its easy to split among your views. 

     <TextView android:id="@+id/row1Label" 
      android:layout_width="0dip" android:layout_weight="60"  // This will occupy 60% of the remaining space 
      android:layout_height="wrap_content"> 
     </TextView> 

     <TextView android:id="@+id/row1Label" 
      android:layout_width="0dip" android:layout_weight="40"  // This will occupy 40% of the remaining space 
      android:layout_height="wrap_content"> 
     </TextView> 

    </LinearLayout> 

    </TableRow> 

    <TableRow> 

    <LinearLayout android:layout_width="fill_parent" android:orientation="horizontal" 
        android:layout_height="wrap_content" android:weightSum="100"> 

     <TextView android:id="@+id/row2Label" 
      android:layout_width="0dip" android:layout_weight="60"  // This will occupy 60% of the remaining space 
      android:layout_height="wrap_content"> 
     </TextView> 

     <TextView android:id="@+id/row3Label" 
      android:layout_width="0dip" android:layout_weight="40"  // This will occupy 40% of the remaining space 
      android:layout_height="wrap_content"> 
     </TextView> 


     // You can more views and distribute the space accordingly.... 

    </LinearLayout> 

    </TableRow> 

...........

Avec cela, vous pouvez obtenir quelque chose comme ça enter image description here

Vous pouvez diviser la zone Tableau de ligne de la façon que vous voulez. Cela peut être fait en utilisant uniquement Linear Layout car les autres dispositions n'ont pas cette option de poids. J'ai largement utilisé cette méthodologie pour créer des vues complexes. J'espère que cela vous aide.

Questions connexes