0

我希望OK/Cancel按钮锚定在底部(即使列表上有更多可以显示在屏幕上的项目)。这是它目前的样子:

在此处输入图像描述

按钮在顶部,而不是在底部。

包含按钮的布局:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:orientation="horizontal"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:stretchColumns="true"
             android:id="@+id/buttons_layout">    
    <TableRow>    
        <Button
            android:id="@+id/btnOK"
            android:background="@color/pomegranate"
            android:text="OK"
            android:layout_gravity="fill_horizontal"
            android:layout_weight="1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>        
        <Button
            android:id="@+id/btnCancel"
            android:background="@color/wet_asphalt"
            android:text="Cancel"
            android:layout_weight="1"
            android:layout_gravity="fill_horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
    </TableRow>
</TableLayout>

复合布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">
    <ListView android:id="@+id/options_list"
              android:layout_width="fill_parent"
              android:layout_height="match_parent">
    </ListView>
    <include layout="@id/buttons_layout"
             android:layout_alignParentBottom="true"
             android:layout_height="match_parent"
             android:layout_below="@id/options_list"/>
</RelativeLayout>

我遵循了我在http://developer.android.com/guide/topics/ui/layout/relative.html上阅读的指南

我试过这个答案 - https://stackoverflow.com/a/6285438/168719 - 它没有帮助我。

我怀疑它可能不起作用,因为列表视图不“知道”它有多高,所以按钮布局也不知道将自己放置在哪里。但我通过将 ListView 高度设置为任意值(如 100dp)来排除它。按钮仍然叠加在它上面。

我摆弄了所有的布局属性,但我无法让它工作。

除了解决方案,我还想知道为什么我的不起作用......

4

5 回答 5

1

布局应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <ListView android:id="@+id/options_list"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_above="@+id/layout_buttons" >
    </ListView>
    <include android:id="@+id/layout_buttons"
             layout="@id/buttons_layout"
             android:layout_alignParentBottom="true"
             android:layout_height="wrap_parent"
             android:layout_width="wrap_content"/>
</RelativeLayout>
于 2013-10-27T19:07:32.543 回答
0

尝试这个。把include标签放在另一个里面RelativeLayout,然后确保ListView在新的上面RelativeLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parentLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/buttonsContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" >

        <include
            android:id="@+id/buttons"
            android:layout_width="wrap_content"
            layout="@layout/buttons_layout" />
    </RelativeLayout>

    <ListView
        android:id="@+id/options_list"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/buttonsContent" >
    </ListView>

</RelativeLayout>
于 2013-10-27T19:35:12.277 回答
0

像这样试试

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/layout_buttons"
            android:orientation="vertical" >
        <ListView android:id="@+id/options_list"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent">
        </ListView>
       </LinearLayout>
        <include android:id="@+id/layout_buttons"
                 layout="@id/buttons_layout"
                 android:layout_alignParentBottom="true"
                 android:layout_height="wrap_parent"
                 android:layout_width="wrap_content"/>
    </RelativeLayout>
于 2013-10-27T19:35:24.713 回答
0

你可以使用标签来做到这一点

你可以看到这个教程

Android 标签布局教程

于 2013-10-27T19:10:29.777 回答
0

你可以尝试这样使用它

<relativelayout1>

<relativelayout2 specify layout below listview with id="list">
    <button1>
    <button2>
</relativelayout2>


<listview id="list">
</listview>

</relativelayout1>

因此,这将确保无论您的列表有多长,您始终都能获得列表下方的按钮。因此您可以在列表下方有一个滚动列表和一个静态按钮

于 2013-10-27T19:11:45.237 回答