Android线性/相对布局 – 如何“自动调整”中间的对象(3个对象)

我有两种情况与线性(也尝试过相对)在Android的布局。 一个是水平的,另一个是垂直的。 让我们从水平开始吧:

它是这样的:

<LinearLayout ... > <Button ... layout:gravity = "left" layout:width = "wrap_content"/> <TextView ... layout:width = ??????? /> <Image .... layout:gravity = "right" layout:width = "wrap_content"/> </LinearLayout> 

那么,我想要button留在左边,图像留在右边(坚持到最后,不只是正确的文本视图)和textview(可能与一个autowidth或其他)留在中间。 如果我把textview的宽度设置为“fill / match_parent”,它会把图像从屏幕上传出来,如果我把wrap_content放到屏幕的右边,那么图像也不会停留在屏幕的右边。

同样的案例在垂直,我有这样的事情:

 <LinearLayout ...> <LinearLayout .... layout:height = "wrap_content" layout:gravity= "top" /> <ListView layout:height = ???????> <LinearLayout ... layout:height = "wrap_content" layout:gravity = "bottom" /> </LinearLayout> 

这里同样的要求。 我希望第一个L.layout保持在最前面,在它们之间列出视图自动大小和第二个线性布局保持在底部。 (想象一下,我试图创build一个看起来像iPhone中的UITableView,有一个NavigationBar,项目列表和一个工具栏在底部。第一个LinearLayout是NavigationBar,LIst视图是单元格,第二个LinearLayout是工具栏)。

有什么build议么? 喜欢XML解决scheme。

Related of "Android线性/相对布局 – 如何“自动调整”中间的对象(3个对象)"

它可以简单地通过在这里使用RelativeLayout来完成。

水平alignment

 <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="something" /> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toLeftOf="@+id/image" android:layout_toRightOf="@+id/button" /> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:background="@drawable/icon" /> </RelativeLayout> 

垂直alignment

  <LinearLayout android:id="@+id/linear_top" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ListView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/linear_top" android:layout_above="@+id/linear_bottom" /> <LinearLayout android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" /> </RelativeLayout> 

对于第二个需求,使用layout_weight作为列表视图

 <RelativeLayout ...> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_alignParentTop="true" /> <ListView android:layout_height ="0dp" android:layout_width="fill_parent" android:layout_weight="1" android:layout_below="@+id/top_layout" android:layout_above="@+id/bottm_layout" /> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_alignParentBottom="true" /> </RelativeLayout> 

您可以尝试使用TableLayout,而不是使用Stretch Column的 LinearLayout 1(Table LAyout中的列索引为0)。

第一列是你的button。

第二列是你的textview。

第三栏是你的形象。

你可以谷歌关于例子或看TableLayout 。

更新:

你可以看得更清楚:

 <RelativeLayout> <!-- This is Header--> <LinearLayout ..... android:layout_alignParentTop="true" > </LinearLayout> <!-- This is your table--> <TableLayout ..... android:stretchColumns = 1> <TableRow> <Button> ..... </Button> <TextView> ..... </TextView> <ImageView> ..... </ImageView> </TableRow> </TableLayout> <!-- This is Footer--> <LinearLayout ..... android:layout_alignParentBottom="true" > </LinearLayout> </RelativeLayout>