使列表视图不可滚动或使列表视图在滚动视图中垂直扩展
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,因此它可以用作父滚动容器或子滚动容器。
我在一个滚动视图中有 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,因此它可以用作父滚动容器或子滚动容器。