无法安排LinearLayout在底部使用ListView显示按钮

时间:2017-09-13 19:42:04

标签: android xml listview

考虑下一段xml -

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:context="com.android.fiby.fragments.MenuFragment"
             android:orientation="vertical"
             android:layout_weight="0.7">

        <com.android.fiby.TitleFont
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"
            android:textColor="#5e240a"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textSize="40dp"
            android:text="בדיקה"
            android:id="@+id/list_title"/>

        <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>

    </LinearLayout>

    <LinearLayout android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:visibility="visible"
              android:layout_gravity="bottom"
              android:gravity="center"
                  android:layout_weight="0.05">

        <ImageView
            android:id="@+id/buy_now"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/button"/>

    </LinearLayout>

</LinearLayout>

这就是它的外观(忽略FAB和动作按钮) enter image description here

问题是当我从列表视图中删除元素时,按钮也会上升。我想要的是,无论ListView中有多少项,按钮总是在底部。

修改

我尝试过以下方式使用相对布局 -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

    <com.android.fiby.TitleFont
        android:textColor="#5e240a"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="40dp"
        android:text="בדיקה"
        android:id="@+id/list_title"
        android:layout_alignParentTop="true" 
        android:layout_centerHorizontal="true"/>



    <ListView
        android:layout_below="@+id/list_title"
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

    <ImageView
        android:layout_below="@android:id/list"
        android:id="@+id/buy_now"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/button"
        android:layout_gravity="center"
        android:layout_alignParentBottom="true"/>


</RelativeLayout>

但问题是listview会覆盖按钮 -

enter image description here

我不想改变列表的高度,因为禁用图像可见性的其他活动会使用它。

2 个答案:

答案 0 :(得分:0)

您应该尝试使用RelativeLayout并使用此行

android:layout_alignParentBottom="true"

这会将项目停靠在底部

答案 1 :(得分:0)

您可以使用RelativeLayout而不是LinearLayout,并将此按钮始终设置在列表视图下方。像这样:

<LinearLayout android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:visibility="visible"
          android:layout_gravity="bottom"
          android:gravity="center"
          android:id="@+id/listview"
          android:layout_weight="0.05">

    <ImageView
        android:id="@+id/buy_now"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/listview"
        android:src="@drawable/button"/>

或者,如果您希望按钮始终位于活动的底部,请尝试以下操作:

        android:layout_alignParentBottom="true"

EDIT1: 尝试在按钮上方设置ListView,而不是在列表视图下方设置按钮。

<ListView
    android:layout_below="@+id/list_title"
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@+id/buy_now"/>

<Button
    android:id="@+id/buy_now"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_alignParentBottom="true"/>

或者您可以使用ScrollView ...