使列表视图不可滚动或使列表视图在滚动视图中垂直扩展

Making listview unscrollable or making listview expand vertically in scrollview

我在一个滚动视图中有 4 个列表视图。我知道滚动视图不需要使列表视图可滚动。但我的问题是我在一个 activity 中有太多内容,所以必须使整个布局可滚动,否则我会错过内容。直到内容适合屏幕,列表视图甚至在滚动视图内也是可滚动的(图 1)。整个布局不适合显示的那一刻,即当滚动条出现时,列表视图不可滚动(图 2)。

隐藏自动完成文本视图(ACTV) 下面的文本视图。只有在 ACTV 中单击项目时,textview 才会可见。 不知何故,我想让列表视图始终可滚动,或者在添加越来越多的项目时扩展列表视图的显示。

activity_centre.xml(这个有scrollview)

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_centre"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.nlss.custom_diet.Centre">


<TextView
    android:text="Breakfast"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:id="@+id/bf"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/bfac"
    android:layout_alignEnd="@+id/bf"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="64dp"
    android:visibility="gone"
    android:id="@+id/bftvdisp" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/bfac"
    android:layout_alignStart="@+id/breakfastAddBT"
    android:visibility="gone"
    android:layout_marginTop="10dp"
    android:id="@+id/bfcal" />

<ListView android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/bfListView"
    android:layout_centerHorizontal="true"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:layout_below="@+id/bftvdisp">
</ListView>

<ListView android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/lnListView"
    android:layout_centerHorizontal="true"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:layout_below="@+id/lntvdisp">
</ListView>

<ListView android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/dnListView"
    android:layout_centerHorizontal="true"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:layout_below="@+id/dntvdisp">
</ListView>

<ListView android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/snListView"
    android:layout_centerHorizontal="true"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:layout_below="@+id/sntvdisp">
</ListView>


<TextView
    android:text="Lunch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/bfListView"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:id="@+id/ln" />

<AutoCompleteTextView
    android:id="@+id/bfac"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/bf"
    android:layout_marginTop="10dp"
    android:hint="Select food" />

<AutoCompleteTextView
    android:id="@+id/lnac"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/bfac"
    android:layout_below="@+id/ln"
    android:layout_marginTop="10dp"
    android:layout_toStartOf="@+id/breakfastAddBT"
    android:hint="Select food" />

<TextView
    android:text="Dinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/lnListView"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:id="@+id/dn" />

<AutoCompleteTextView
    android:id="@+id/dnac"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/lnac"
    android:layout_alignStart="@+id/lnac"
    android:layout_below="@+id/dn"
    android:layout_marginTop="10dp"
    android:hint="Select food" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/dnac"
    android:visibility="gone"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:id="@+id/dntvdisp" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/dnac"
    android:visibility="gone"
    android:layout_alignStart="@+id/dinnerAddBT"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:id="@+id/dncal" />

<TextView
    android:text="Snacks"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/dnListView"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:id="@+id/sn" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"
    android:id="@+id/lntvdisp"
    android:layout_below="@+id/lnac"
    android:layout_alignEnd="@+id/bf"
    android:layout_marginTop="10dp" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"
    android:id="@+id/lncal"
    android:layout_alignStart="@+id/LunchAddBT"
    android:layout_below="@+id/lnac"
    android:layout_marginTop="10dp" />

<AutoCompleteTextView
    android:hint="Select food"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:id="@+id/snac"
    android:layout_marginTop="10dp"
    android:layout_below="@+id/sn"
    android:layout_alignStart="@+id/dnac"
    android:layout_alignEnd="@+id/dnac" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/snac"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:visibility="gone"
    android:id="@+id/sntvdisp" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/snac"
    android:layout_alignStart="@+id/snacksAddBT"
    android:layout_marginTop="10dp"
    android:visibility="gone"
    android:id="@+id/sncal" />

<Button
    android:id="@+id/snacksAddBT"
    android:layout_width="90dp"
    android:layout_height="40dp"
    android:layout_alignStart="@+id/dinnerAddBT"
    android:layout_alignTop="@+id/snac"
    android:text="Add"/>

<Button
    android:id="@+id/LunchAddBT"
    android:layout_width="90dp"
    android:layout_height="40dp"
    android:layout_alignStart="@+id/breakfastAddBT"
    android:layout_alignTop="@+id/lnac"
    android:text="Add" />

<Button
    android:id="@+id/dinnerAddBT"
    android:layout_width="90dp"
    android:layout_height="40dp"
    android:layout_alignStart="@+id/LunchAddBT"
    android:layout_alignTop="@+id/dnac"
    android:text="Add" />

<Button
    android:id="@+id/breakfastAddBT"
    android:layout_width="90dp"
    android:layout_height="40dp"
    android:layout_alignBottom="@+id/bfac"
    android:layout_marginStart="14dp"
    android:layout_toEndOf="@+id/bfac"
    android:text="Add" />

scrollview.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rowTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>

使用以下代码段

 listView.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_MOVE && scrollbarsVisible) {
                    return true;  // this will disable the scrolling in listview
                } 
                return false;
            }
        });

您可以使用 NestedScroll Containers.You 可以通过在 XML 声明中添加 android:nestedScrollingEnabled="true" 或显式调用 setNestedScrollingEnabled(true) 来为子滚动视图启用它.此方法仅适用于 运行 API 21 及以上的设备。

对于 API 20 之前的旧版本和 android 版本,您可以使用支持库中的 类。首先,您必须将 ScrollView 替换为 NestedScrollView。后者同时实现了 NestedScrollingParent 和 NestedScrollingChild,因此它可以用作父滚动容器或子滚动容器。