16

Questo è mio layout:layout_gravity in 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> 

Il posizionamento di ImageView e TextView in LinearLayout2 e posizionamento pezzi di pulsanti in LinearLayout3 non funziona (usando la layout gravità).

Cosa mi manca qui?

+1

Cosa vuol dire lavorare? Come se fossero entrambi allineati ...? – chustar

+0

Sì, sono entrambi allineati a sinistra. – DixieFlatline

+1

se l'orientamento linearlayout è impostato su 'orizzontale', la gravità a sinistra oa destra non funziona. Impostandolo su vertical wil rendilo possibile. Non sono sicuro di cosa stai provando a realizzare qui ... – Boy

risposta

64

Questo non è il modo in cui funziona android:layout_gravity. Entrambi, i parametri left e center_horizontal funzionano solo quando lo android:orientation è vertical. Per ottenere ciò che si vuole, è meglio utilizzare 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. È un bug o una regola che non è possibile utilizzare l'orientamento orizzontale/sinistro nell'orientamento orizzontale del layout lineare? – DixieFlatline

+10

Non è un bug. Solo una caratteristica – Cristian

+9

Non penso che tu abbia bisogno dell'attributo 'android: orientation' in' RelativeLayout'. – DroidDev

-17
android:layout_marginLeft="5dip" 

dovrebbe essere (dp non immergere)

android:layout_marginLeft="5dp" 
+9

Sono equivalenti e non risolveranno il problema. – Cristian

+2

In effetti è stato segnalato aneddoticamente che dp a volte non riesce a funzionare dove dip funziona, nonostante la documentazione affermi che sono uguali. – Zulaxia