2011-11-03 5 views
0

J'essaye de dupliquer la disposition suivante par programme; cependant, setGravity et setPadding ne semblent pas avoir d'effet:Mise en page par programmation avec SetPadding et SetGravity

J'essaye de recréer les textviews dans les TableRows (notez qu'il y a le remplissage et la deuxième vue de texte est alignée à droite). De plus, je suis en train de recréer des entrées supplémentaires parce qu'ils sont dynamiques:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/myinfo_root" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:scrollbars="vertical" 
     > 
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainTable" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1"> 

    <TableRow> 
     <TextView 
      android:layout_column="1" 
      android:text="Text1" 
      android:padding="3dip" /> 

     <TextView 
      android:id="@+id/text1" 
      android:text="TBD" 
      android:gravity="right" 
      android:padding="3dip" /> 
    </TableRow> 
    <TableRow> 
     <TextView 
      android:layout_column="1" 
      android:text="Text2" 
      android:padding="3dip" /> 

     <TextView 
      android:id="@+id/text2" 
      android:text="TBD" 
      android:gravity="right" 
      android:padding="3dip" /> 
    </TableRow> 
    . . . 

Voici un extrait de code pour ajouter les TextViews. Cela semble fonctionner mais les entrées n'ont pas de remplissage et ne sont pas alignées correctement.

int n = 0; 
    TableLayout table = (TableLayout) findViewById(R.id.mainTable); 

    for (int j=0; j<2; j++) { 
     Log.v(LOG_TAG, "entering for loop"); 
     n++; 

     TableRow tr = new TableRow(getApplicationContext()); 
     tr.setId(100+n); 

     String key = "hello"; 
     float value = (float) 1.388); 
     value = value/3600; 

     TextView tvDynamicKey = new TextView(getApplicationContext());      
     TextView tvDynamicUnit = new TextView(getApplicationContext()); 

     tvDynamicUnit.setText(Float.toString(value)); 
     tvDynamicUnit.setGravity(Gravity.RIGHT); 
     tvDynamicKey.setText(key + " " + n); 
     tvDynamicKey.setPadding(3, 3, 3, 3); 
     tvDynamicUnit.setPadding(3, 3, 3, 3); 
     tr.addView(tvDynamicKey); 
     tr.addView(tvDynamicUnit); 
     table.addView(tr); 
    }  
    } 

Répondre

1

Dans votre modèle, vous spécifiez toujours column1 pour l'élément de gauche (android: layout_column = "1"). Mais vous ne le faites pas par programmation pour la création dynamique. Vous pouvez le faire comme ça. Je l'ai testé, ça marche sur mon environnement.

tvDynamicKey.setLayoutParams(new TableRow.LayoutParams(1)); 
+0

Merci, ça fonctionne! – user836200

Questions connexes