2013-01-04 15 views
6

Dlaczego ta centralna zawartość nie jest widoczna w widoku?Grawitacja pionowego wyrównania nie odpowiada

<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" 
    android:layout_gravity="center_vertical" 
    tools:context=".MainActivity"> 

    <EditText 
     android:id="@+id/messageTextField" 
     android:layout_weight="1" 
     android:inputType="number" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:hint="@string/messageTextFieldPlaceholder" 
    /> 
    <Button 
     android:id="@+id/sendButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/sendButtonTitle" 
     android:onClick="sendMessage" 
    /> 

</LinearLayout> 

Widziałem kilka SO wątki o pionowym ustawieniu i również widoczne this, ale tylko poziomy LinearLayout, więc ustawienie wagi dostosuje widoki z boku na bok.

Ponieważ LinearLayout ma wymiary rodzica, czy nie wypełnia całego ekranu?

Czy nie należy android:layout_gravity="center_vertical" wyrównać jego subviews w środku (w pionie) jego wymiarów?

To ma dla mnie sens w całym kodowaniu, które zrobiłem, więc dlaczego android nie ma sensu?

Czy potrzebuję innego LinearLayout, który jest pionowy, który zawiera wszystko inne w środku i ma to z android:layout_gravity="center_vertical"?

Odpowiedz

9

layout_gravity:
standardowa grawitacja stała, że ​​dziecko może dostarczyć do jego rodzica.

gravity:
Określa się to zawartości obiektu, zarówno na osi x i osi Y, w obrębie samego obiektu.

Jeśli chcesz, aby zawartość była wyśrodkowana pionowo, potrzebujesz gravity, a nie layout_gravity.

+0

Ok. A zatem layout_gravity jest dla zawartości, ponieważ komunikuje się z jej układem, a grawitacja byłaby dla układów, ponieważ dostosowuje zawartość, prawda? – RileyE

+0

tak. 'layout_gravity' -> child to parent,' gravity' -> rodzic dla dziecka. – Ahmad

+1

Świetnie. Dziękuję Ci! – RileyE

1

Zamiast android:layout_gravity="center_vertical" proszę skorzystać android:gravity="center_vertical", będzie pracować ... :)

+0

Dziękuję za pomoc. Musiałem jednak pójść z Ahmadem na dodatkowe wyjaśnienie. – RileyE

Powiązane problemy