2012-04-04 1 views
2

Je ne parviens pas à aligner les lignes de ma TableLayout sur l'écran. J'essaie de créer une table 4x4 d'images cliquables et je veux les centrer sur l'écran. Il finit de les dessiner alignés à gauche, je voudrais qu'ils soient centrés avec de l'espace de chaque côté. Voici le code que j'ai:Les lignes de TableLayout ne peuvent pas être centrées horizontalement

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="20dp"> 

     <TableRow android:layout_gravity="center_horizontal"> 

      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" 
       android:layout_gravity="center" /> 
      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" 
       android:layout_gravity="center" /> 
      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" 
       android:layout_gravity="center" /> 
      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" 
       android:layout_gravity="center" /> 

     </TableRow> 

     <TableRow android:layout_gravity="center_horizontal"> 

      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" /> 
      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" /> 
      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" /> 
      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" /> 

     </TableRow> 

     <TableRow android:layout_gravity="center_horizontal"> 

      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" /> 
      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" /> 
      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" /> 
      <ImageView android:src="@drawable/rocket" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:padding="3dp" />    
     </TableRow> 

    </TableLayout> 


</LinearLayout> 

Une suggestion?

+1

essayez de changer à si cela ne fonctionne pas, je voudrais ajouter android: width = "wrap_content "aux rangées de la table et voir si cela fonctionne – ByteMe

+0

Changer android: layout_gravity à android: la gravité a fait l'affaire! Je ne peux pas croire que je n'ai pas essayé celui-là mais merci! Des idées sur quelle est la différence? – bieno002

Répondre

5

Habituellement, nous utilisons layout_gravity pour aligner.

essayer

android:gravity="center_horizontal" 

dans votre code.

android:gravity aligne les données sur le centre horizontal.

9

essayer avec android: layout_gravity = "center_horizontal" comme suit

<TableRow android:layout_gravity="center_horizontal" 
      android:layout_weightsum = "4"> 

       <ImageView android:src="@drawable/rocket" 
        android:layout_width="60dp" 
        android:layout_height="60dp" 
        android:padding="3dp" 
        android:layout_weight = "1" /> 
       <ImageView android:src="@drawable/rocket" 
        android:layout_width="60dp" 
        android:layout_height="60dp" 
        android:padding="3dp" 
        android:layout_weight = "1" /> 
       <ImageView android:src="@drawable/rocket" 
        android:layout_width="60dp" 
        android:layout_height="60dp" 
        android:padding="3dp" 
        android:layout_weight = "1" /> 
       <ImageView android:src="@drawable/rocket" 
        android:layout_width="60dp" 
        android:layout_height="60dp" 
        android:padding="3dp" 
        android:layout_weight = "1" />    
      </TableRow> 
+0

android: layout_weightsum - semble déprécié – NBaua

1

Dans votre cas, bieno002, assurez-vous que votre <TableLayout> a layout_width ensemble à "wrap_content". Cela lui donnera l'espace pour respirer de chaque côté. Puis, ajoutez simplement un android:layout_gravity="horizontal" à votre nœud <TableLayout>. Comme si:

<TableLayout android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal"> 
    <TableRow> 
     <TextView (or whatever)> 
     <TextView (or whatever)> 
    </TableRow> 
</TableLayout> 
Questions connexes