16

Ésta es mi diseño:layout_gravity en LinearLayout

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

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/LinearLayout2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="left" 
      android:layout_marginLeft="5dip" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:textColor="#ffffff" > 
     </TextView> 
    </LinearLayout> 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/LinearLayout3" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/nazajGumb" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="@string/roaming_backbtn" > 
     </Button> 

     <Button 
      android:id="@+id/homeBtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:text="@string/roaming_homebtn" > 
     </Button> 
    </LinearLayout> 

    <Spinner 
     android:id="@+id/spinner" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="15dip" 
     android:prompt="@string/roaming_spinnerPrompt" /> 

    <TextView 
     android:id="@+id/tv1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:text="Random text" 
     android:textColor="#ffffcc" /> 

    <Button 
     android:id="@+id/testBtn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="test" > 
    </Button> 
</LinearLayout> 

El posicionamiento de ImageView y TextView en LinearLayout2 y positiong de botones en LinearLayout3 no está funcionando (usando la gravedad de diseño).

¿Qué es lo que falta aquí?

+1

¿Qué no significa trabajar? Como si ambos estuvieran alineados a la izquierda ...? – chustar

+0

Sí, ambos están alineados a la izquierda. – DixieFlatline

+1

si tiene la orientación linearlayout establecida en 'horizontal', la gravedad hacia la izquierda o hacia la derecha no funciona. Configurarlo en vertical lo hará posible. Simplemente no estoy seguro de lo que está tratando de lograr aquí ... – Boy

Respuesta

64

Esa no es la forma en que funciona android:layout_gravity. Ambos, left y center_horizontal parámetros funcionan solo cuando el android:orientation es vertical. Para lograr lo que quiere, es mejor utilizar RelativeLayout:

<RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

     <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="5dip"/> 

     <TextView 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:textColor="#ffffff"/> 
    </RelativeLayout>  
+0

Tnx. ¿Es esto un error o una regla que no se puede usar a la izquierda/centro horizontal en la orientación horizontal del diseño lineal? – DixieFlatline

+10

No es un error. Solo una característica. – Cristian

+9

No creo que necesites el atributo 'android: orientation' en' RelativeLayout'. – DroidDev

-17
android:layout_marginLeft="5dip" 

debería ser (DP no moje)

android:layout_marginLeft="5dp" 
+9

Son equivalentes en realidad, y eso no resolverá el problema. – Cristian

+2

De hecho, se ha informado anecdóticamente que el dp a veces no funciona donde funciona dip, a pesar de la documentación que indica que son los mismos. – Zulaxia

Cuestiones relacionadas