这个简单的布局怎么了?

时间:2010-05-05 12:54:47

标签: android

我试图定义一个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 个答案:

答案 0 :(得分:1)

水平方向的LinearLayout中的重力仅适用于顶部, bottom和center_vertical值(here)。

我认为实现这样的事情的最好方法是使用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> 

我很抱歉,但我现在无法测试..我希望它是对的..

答案 1 :(得分:0)

尝试设置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>

告诉我这是否有效......