如何在可滚动活动中的 ListView 下方放置一个按钮?

Posted

技术标签:

【中文标题】如何在可滚动活动中的 ListView 下方放置一个按钮?【英文标题】:How to Place a Button below a ListView in a Scrollable Activity? 【发布时间】:2020-01-25 20:38:04 【问题描述】:
<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_
        android:layout_
        tools:context=".list1">

            <ImageView
                android:id="@+id/sinb"
                android:layout_
                android:layout_
                android:src="@drawable/left"
                android:padding="10dp"
                android:layout_marginTop="20dp"
                android:layout_marginLeft="20dp"
                />


            <ListView
                android:layout_below="@id/sinb"
                android:layout_
                android:layout_
                android:id="@+id/listView1"
                android:layout_marginTop="30dp"
                android:layout_centerHorizontal="true"
                android:choiceMode="multipleChoice" />
            <Button
                android:id="@+id/btn1"
                android:layout_
                android:layout_
                android:layout_below="@id/listView1"
                android:text="submit"/>

        </RelativeLayout>

我已将这些放在相对布局中。我已尝试使用 ScrollView,但它不起作用。我想要的是一个提交按钮应该显示在 Listview 下方,当列表增长并离开屏幕时,活动变得可滚动并且按钮应该显示在 listview 的末尾下方。

【问题讨论】:

你有什么特殊的原因要尝试在另一个垂直滚动视图中显示垂直滚动列表吗? 我只希望用户看到所有列表项,然后单击提交按钮,而不是之前。所以该按钮直到列表末尾才可见 在下面查看我的答案 不可能,使用recyclerView或者LinearLayout都可以 【参考方案1】:

对于你想要的行为,如果你使用 RecyclerView 而不是 ListView 并让它在 NestedScrollView 内,然后在 RecyclerView 上启用 nestedScrolling 属性会更好。这样,您的 RecyclerView 将表现得像一个长列表,并且它下面的所有视图只有在列表用完后才可见。 查看answers in this link 了解其他人如何实现它。

【讨论】:

【参考方案2】:

因此,为此您必须将列表和按钮放在 NestedScrollView 中,但 Nestedscrollview 仅支持单个子项,因此首先您必须将 Listbutton 放入布局中,然后放入NestedScrollView里面的布局,可以参考以下代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    xmlns:tools="http://schemas.android.com/tools">

    <ImageView
        android:id="@+id/sinb"
        android:layout_
        android:layout_
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:padding="10dp"
        android:src="@drawable/left" />

    <android.support.v4.widget.NestedScrollView
        android:layout_
        android:layout_
        android:layout_below="@id/sinb">

        <RelativeLayout
            android:layout_
            android:layout_>

            <ListView
                android:id="@+id/listView1"
                android:layout_
                android:layout_
                android:layout_marginTop="30dp"
                tools:listitem="@layout/item_view_note"
                android:choiceMode="multipleChoice" />

            <Button
                android:id="@+id/btn1"
                android:layout_
                android:layout_
                android:layout_below="@id/listView1"
                android:text="submit" />
        </RelativeLayout>

    </android.support.v4.widget.NestedScrollView>
</RelativeLayout>

【讨论】:

【参考方案3】:

添加 ScrollView/NestedScrollView 作为父布局并在滚动视图中添加视图(ListView 和 Button)

试试这个代码:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_
            android:layout_
            tools:context=".list1">

                <ImageView
                    android:id="@+id/sinb"
                    android:layout_
                    android:layout_
                    android:src="@drawable/left"
                    android:padding="10dp"
                    android:layout_marginTop="20dp"
                    android:layout_marginLeft="20dp"
                    />
        <android.support.v4.widget.NestedScrollView
                            android:id="@+id/navigation_nested"
                            android:layout_
                            android:layout_
                            android:fillViewport="true"
                              android:layout_below="@+id/sinb"
                            android:overScrollMode="never">
         <LinearLayout
                    android:layout_
                    android:layout_
                    android:orientation="vertical"
                    android:padding="@dimen/margin_15">
                         <ListView
                    android:layout_
                    android:layout_
                    android:id="@+id/listView1"
                    android:layout_marginTop="30dp"
                    android:layout_centerHorizontal="true"
                    android:choiceMode="multipleChoice" />
                <Button
                    android:id="@+id/btn1"
                    android:layout_
                    android:layout_
                    android:text="submit"/>
</LinearLayout>
    </android.support.v4.widget.NestedScrollView>
    </RelativeLayout >

【讨论】:

【参考方案4】:

将listView的高度设为固定,然后将按钮放在其下方。

【讨论】:

以上是关于如何在可滚动活动中的 ListView 下方放置一个按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在可扩展的listview android中将孩子添加到特定的父母

如何将可扩展的 ListView 放入 ScrollView

Android ListActivity - 如何在 ListView 下方添加视图?

在 Android 中的顶部 ListView 项目上方(以及最后一个项目下方)添加边距

ListView 在滚动时不会更改元素

如何在 UIScrollView 的滚动指示器下方放置非滚动 UIView?