7

我在android中有两个线性(也尝试过相对)布局的案例。一种发生在水平方向,另一种发生在垂直方向。让我们从水平开始:

它是这样的:

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

好吧,我希望按钮留在左边,图像留在右边(坚持到最后,不仅仅是文本视图的右边)和文本视图(可能带有自动宽度或其他)留在中间. 如果我输入 textview width = "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 保持在顶部,列表视图在它们之间自动调整大小,第二个线性布局保持在底部。(想象一下,我正在尝试在 iPhone 中创建一个看起来像 UITableView 的视图,该视图在底部有一个 NavigationBar、项目列表和一个 ToolBar。拳头 LinearLayout 是 NavigationBar,LIst 视图是单元格,第二个 LinearLayout 是工具栏)。

有什么建议么?更喜欢xml解决方案。

4

3 回答 3

7

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

水平对齐

<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>

垂直对齐

  <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>
于 2012-08-03T06:19:38.483 回答
3

对于您的第二个要求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>
于 2012-08-03T06:23:50.953 回答
0

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

第一列是您的按钮。

第二列是您的文本视图。

第三列是你的形象。

您可以在 Google 上搜索示例或查看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>
于 2012-08-03T06:46:50.850 回答