16

To mój układ:layout_gravity w 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> 

Pozycjonowanie ImageView i TextView w LinearLayout2 i positiong przycisków w LinearLayout3 nie działa (z użyciem układu grawitacji).

Czego tu mi brakuje?

+1

Co nie znaczy działa? Obaj są wyrównani do lewej ...? – chustar

+0

Tak, oba są wyrównane do lewej. – DixieFlatline

+1

jeśli orientacja linearlayout jest ustawiona na poziomą, grawitacja w lewo lub w prawo nie działa. Ustawienie tego na pionowe pozwoli to zrobić. Po prostu nie jestem pewien, co próbujesz osiągnąć tutaj ... – Boy

Odpowiedz

64

To nie jest sposób, w jaki działa android:layout_gravity. Oba parametry: left i center_horizontal działają tylko wtedy, gdy android:orientation jest . Aby osiągnąć to, co chcesz, to lepiej użyć 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. Czy jest to błąd, czy reguła, że ​​nie można użyć lewej/środkowej linii poziomej w orientacji poziomej układu liniowego? – DixieFlatline

+10

To nie jest błąd. Tylko funkcja. – Cristian

+9

Nie sądzę, abyś potrzebował atrybutu 'android: orientation' w' RelativeLayout'. – DroidDev

-17
android:layout_marginLeft="5dip" 

powinny być (dp nie DIP)

android:layout_marginLeft="5dp" 
+9

Są one faktycznie równoważne, a to nie rozwiąże problemu. – Cristian

+2

W rzeczywistości raportowano anegdotycznie, że dp czasami nie działa tam, gdzie działa dip, pomimo dokumentacji stwierdzającej, że są one takie same. – Zulaxia