2011-12-09 11 views
26
<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/linearLayout2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Street" 
      android:layout_gravity="left"/> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="456546546" 
      android:layout_gravity="right" /> 

    </LinearLayout> 

</LinearLayout> 

Estoy tratando de crear un diseño con dos columnas, con una vista de texto en el lado izquierdo y el otro en el lado derecho. Sin embargo, las textviews todavía están todas en el lado izquierdo.Android: creando dos columnas en una distribución lineal

Respuesta

74

Debe usar el atributo android:layout_weight. He aquí un ejemplo:

<LinearLayout 
    android:id="@+id/linearLayout2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:text="Street" 
     android:layout_gravity="left" 
     android:background="#88FF0000"/> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:text="456546546" 
     android:layout_gravity="right" 
     android:background="#8800FF00"/> 

</LinearLayout> 

enter image description here

+1

Sí, esto funciona así; probablemente funcione mejor si necesita columnas completas en lugar de solo texto a la izquierda y texto a la derecha. –

1

Pruebe el diseño de la tabla al hacer esto. En el diseño gráfico, el diseño de la tabla de arrastre coloca elementos en la celda.

4

Sí, éste es confuso. Aunque el ancho de LinearLayout está configurado en fill_parent, solo toma el ancho mínimo necesario. Es necesario establecer la segunda TextView a fill_parent y luego su gravedad a derecha:

<LinearLayout 
    android:id="@+id/linearLayout2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Street"/> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="456546546" 
     android:gravity="right" /> 

</LinearLayout> 
+0

Esto optimiza un poco mejor que especificar "peso". – csi

3

Si quieres tener múltiples filas en cada columna u puede utilizar Table Layout

3

espero que así sea útil para usted.

Prueba este código ..

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 


    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:background="#00FF00" 
     android:paddingRight="90dp" 
     android:orientation="vertical" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/b1" 
      android:text="Button 1"/> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#FF00FF" 
     android:orientation="vertical" >  

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/b2" 
      android:text="Button 2"/> 

    </LinearLayout> 

</LinearLayout> 
2

Y si necesita una brecha entre los botones:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <Button 

     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.95" 
     android:text="Via SMS" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.05" /> 

    <Button 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.95" 
     android:text="Diaporama" /> 
</LinearLayout> 
0

Un problema potencial con sólo tener dos LinearLayouts verticales para usted columnas es que nada garantiza filas se alinearse si las alturas de fila son variables. TableLayout es lo mejor para esto, y también le da un montón de control sobre cómo las columnas se contraen o crecen para llenar el espacio disponible.

El enlace ha cambiado desde @ santhosh-shettigar publicado.
Guía: https://developer.android.com/guide/topics/ui/layout/grid.html
Referencia: http://developer.android.com/reference/android/widget/TableLayout.html

Cuestiones relacionadas