Что не так с этим простым макетом? - PullRequest
4 голосов
/ 05 мая 2010

Я пытаюсь определить LinearLayout, который содержит другой LinearLayout, который всегда должен отображаться в горизонтальном и вертикальном центре. ImageView должен быть размещен всегда вертикально по центру с правой стороны родительского макета:

                                 A                                           B

Я определил это следующим образом:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="60px">

     <LinearLayout android:id="@+id/footer" android:orientation="horizontal" android:layout_height="50px" android:paddingTop="5px" android:layout_width="wrap_content" android:background="@drawable/footer_border" android:paddingRight="5px" android:paddingLeft="5px" android:layout_gravity="center_horizontal">
        <ImageButton android:id="@+id/libraryButton" android:layout_height="wrap_content" android:src="@drawable/library_button" android:background="#000000" android:layout_width="wrap_content"/>
        <ImageButton android:id="@+id/bookButton" android:layout_height="wrap_content" android:src="@drawable/book_button" android:background="#000000" android:layout_width="wrap_content" android:paddingLeft="15px" android:paddingRight="15px"/>
        <ImageButton android:id="@+id/workspaceButton" android:layout_height="wrap_content" android:src="@drawable/workspace_button" android:background="#000000" android:layout_width="wrap_content"/>
     </LinearLayout>

     <ImageView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="right"
     android:id="@+id/loading">
     </ImageView>

     </LinearLayout> 

Но unfornatuley не работает ... LinearLayout (A) и ImageView (B) на левой стороне .... Но я установил гравитацию в центр и вправо ?? Почему?

Ответы [ 2 ]

1 голос
/ 05 мая 2010

Гравитация в LinearLayout с горизонтальной ориентацией будет работать только для верха, нижнее и центральное_вертикальное значение ( здесь ).

Я думаю, что лучший способ добиться этого - использовать RelativeLayout вместо LinearLayout. Что-то вроде:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="60px">

<LinearLayout android:id="@+id/footer" 
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:center_in_parent="true"
>
....
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/loading"
android:align_parent_right="true">
</ImageView>

</RelativeLayout> 

Извините, но я не могу проверить это прямо сейчас .. Я надеюсь, что это правильно ..

0 голосов
/ 05 мая 2010

Попробуйте установить параметр android:layout_alignParentRight

<ImageView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="right"
 android:id="@+id/loading"
 android:layout_alignParentRight="true">
</ImageView>

Скажи мне, если это работает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...