【问题标题】:Making listview unscrollable or making listview expand vertically in scrollview使列表视图不可滚动或使列表视图在滚动视图中垂直扩展
【发布时间】:2017-03-13 10:33:41
【问题描述】:

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

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

activity_centre.xml(这有滚动视图)

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

【问题讨论】:

    标签: android android-layout listview scrollview android-scrollview


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      使用下面这个sn-p

       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;
                  }
              });
      

      【讨论】:

      • 但是通过禁用滚动,会显示整个列表视图吗?
      • No.. 在任何时候你都有一个选择,要么滚动 listView 要么滚动 scrollView
      • android:nestedScrollingEnabled="true" 确实有助于在任何给定时间滚动列表视图和布局
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      相关资源
      最近更新 更多