2011-06-16 6 views
9

que estoy tratando de alinear 3 vistas de texto en un TableRow como esto:TextViews Alineando en un TableRow

|------------------------------------------------| 
| {TextView1} {TextView2}   {TextView3} | 
|------------------------------------------------| 

// TextView 1, 2 Left aligned 
// TextView 3 Right aligned 

Además, la fila de la tabla deben llenar el ancho de la tabla.

Con el código de abajo sólo puedo lograr esto:

|------------------------------------------------| 
| {TextView1} {TextView2} {TextView3}   | 
|------------------------------------------------| 

código I:

TableRow tr = new TableRow(myActivity.this); 

TextView tvLeft = new TextView(myActivity.this); 
tvLeft.setText(values[0]); 

TextView tvCenter = new TextView(myActivity.this); 
tvCenter.setText(values[1]); 

TextView tvRight = new TextView(myActivity.this); 
tvRight.setText(values[2]); 
tvRight.setGravity(Gravity.RIGHT); 

tr.addView(tvLeft); 
tr.addView(tvCenter); 
tr.addView(tvRight); 

myTable.addView(tr); 

La vista de texto derecho no está gravitando hacia la derecha, y la fila de tabla no llena la ancho de la mesa. ¿Debo usar pesos en las vistas de texto?

Editar: Agregado TableLayout:

<TableLayout 
android:layout_height="wrap_content" 
android:id="@+id/myTable" 
android:layout_width="fill_parent" 
> 
</TableLayout> 
+0

+1 para el buen formato –

+1

Creo que es mejor usar una disposición relativa aquí –

+0

@Labeeb puede por favor elaborar. –

Respuesta

8

Second Shot

No estoy seguro de si va a crear el TableLayout programación o en XML o lo que las propiedades son, pero suena como desea

(en Java)

myTable.setColumnStretchable(2, true); 

(en XML)

android:stretchColumns="2" 
+0

¿Colocaría TextViews en una RelativeLayout dentro de TableRow, y usar una alineación relativa sería una mejor solución? –

+0

En este caso, no creo que importe demasiado, con lo que sea más cómodo. Si estuvieras formateando un LinearLayout en lugar del TableRow, te sugiero que hagas todo un RelativeLayout para evitar el anidamiento innecesario, pero en este caso no puedes evitarlo. –

+0

El uso de LinearLayout con los parámetros FILL_PARENT hace que desaparezca el TextView correcto. Lo mismo sucede si uso params WRAP_CONTENT. –

1

creo disposición relativa es mejor. Prueba este

RelativeLayout tr = new RelativeLayout(myActivity.this); 

    TextView tvLeft = new TextView(myActivity.this); 
    tvLeft.setText(values[0]); 

    TextView tvCenter = new TextView(myActivity.this); 
    tvCenter.setText(values[1]); 

    TextView tvRight = new TextView(myActivity.this); 
    tvRight.setText(values[2]); 

    tr.addView(tvLeft); 

    RelativeLayout.LayoutParams relativeLayoutParamsCenter = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    relativeLayoutParamsCenter.addRule(RelativeLayout.RIGHT_OF, tvLeft.getId()); 
    tr.addView(tvCenter,relativeLayoutParamsCenter); 

    RelativeLayout.LayoutParams relativeLayoutParamsRight = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);   
    relativeLayoutParamsRight.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);  
    tr.addView(tvRight,relativeLayoutParamsRight); 

    myTable.addView(tr); 
+0

Estoy planeando agregar muchas de estas "filas" de RelativeLayout a mi mesa. ¿Necesita especificar para cada fila que está por debajo de la última? –

Cuestiones relacionadas