web-dev-qa-db-ja.com

ListViewはNestedScrollView内で展開されません

アクティビティページでCoordinatorLayoutを使用しています。その点で、アプリバーの下にListViewがあります。しかし、ListViewの代わりにNestedScrollViewを使用すると動作しません。 ListViewNestedScrollViewの中に入れると、ListViewは展開されません

34
Bincy Baby

CoordinatorLayoutが適切に機能するには、スクロール子が NestedScrollingChild を実装する必要があります。そのようなクラスは、NestedScrollViewおよびRecyclerViewです。

簡単に言うと、スクロールコンテンツにRecyclerViewを使用するだけで、正しく機能します:)

追伸副次的な注意として、ListViewを使用する理由がわかりません。私はそれが習慣であり、セットアップが簡単であることがわかっています(何度も行っているため)。とにかくRecyclerViewを使用することをお勧めします。

32
Vesko

addtributeAndroid:fillViewport="true"Android.support.v4.widget.NestedScrollViewに追加するときに修正できます:)。これは私のコードです。

<Android.support.v4.widget.NestedScrollView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:scrollbars="none"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    Android:fillViewport="true"
    >
    <ListView
        Android:id="@+id/list_myContent"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:scrollbars="vertical"
        >
    </ListView>

</Android.support.v4.widget.NestedScrollView>
67
Chung Nguyen

lollipop以降では使用できます

_setNestedScrollingEnabled(true);
_

listView/GridView/ScrollableViewで。ドキュメントから

このビューのネストされたスクロールを有効または無効にします

oSの古いバージョンとの後方互換性が必要な場合は、RecyclerViewを使用する必要があります。もっと読むことができます こちら

編集。 ViewCompatには、静的メソッドsetNestedScrollingEnabled(View, boolean)があります。例えば。

_ViewCompat.setNestedScrollingEnabled(listView, true)
_

指摘してくれた_@Dogcat_に感謝

40
Blackbelt

ただAndroid:fillViewport="true"あなたの中NestedScrollViewタグ

11
Shivam

これは私のために働いたものです。

セットする Android:fillViewport="true"上のNestedScrollView

NestedScrollViewに1つのレイアウト要素を子として追加します。私の場合、LinearLayoutを設定してからAndroid:nestedScrollingEnabled="true" on ListView on ListViewLinearLayoutの子にする

行ってもいい

6
Louis Nuhoho

リストビューがスクロールします。助けてほしい。

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout 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.support.v4.widget.NestedScrollView
         Android:layout_width="match_parent"
         Android:layout_height="match_parent"
         Android:fillViewport="true"
         app:layout_behavior="@string/appbar_scrolling_view_behavior">

         <ListView
              Android:layout_width="match_parent"
              Android:layout_height="match_parent"
              Android:nestedScrollingEnabled="true">
         </ListView>
    </Android.support.v4.widget.NestedScrollView>

</Android.support.design.widget.CoordinatorLayout>
5
Tuan Nguyen

以下のコードが私のために働いた:

ViewCompat.setNestedScrollingEnabled(listView, true);

ListViewNestedScrollViewの中にあるはずです

2
Swati Singh

可能であれば、ListViewをRecyclerViewに置き換えます。そうでない場合は、customListViewを作成し、onMeasureListViewを次のように設定します。

 public NonScrollListView(Context context) {
        super(context);
    }

    public NonScrollListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
                Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
        ViewGroup.LayoutParams params = getLayoutParams();
        params.height = getMeasuredHeight();
    }

このListViewはスクロールできなくなり、NestedScrollView内で使用できます。

1
Dipali s.

Nestedscrollview内でリストビューをスクロールすることはできません。

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.NestedScrollView Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    xmlns:Android="http://schemas.Android.com/apk/res/Android">
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="@color/colorAccent"
        Android:orientation="horizontal">

        <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.Android.com/apk/res-auto"
            Android:id="@+id/profile_image"
            Android:layout_width="76dp"
            Android:layout_height="76dp"
            Android:layout_alignParentLeft="true"
            Android:layout_alignParentStart="true"
            Android:layout_centerVertical="true"
            Android:layout_marginLeft="24dp"
            Android:layout_marginStart="24dp"
            Android:src="@drawable/profile"
            app:border_color="#FF000000" />

        <LinearLayout
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_vertical"
            Android:layout_marginLeft="20dp"
            Android:layout_toRightOf="@+id/profile_image"
            Android:gravity="center_vertical"
            Android:orientation="vertical">

            <TextView
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="IRFAN QURESHI"
                Android:textSize="20sp" />

            <TextView
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="[email protected]" />
        </LinearLayout>

        <ImageView
            Android:layout_marginLeft="50dp"
            Android:layout_gravity="center_vertical"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:src="@drawable/ic_delete_black" />
    </LinearLayout>

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"

        Android:background="@color/colorPrimary"
        Android:gravity="center_horizontal"
        Android:padding="30dp">

        <TextView
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_horizontal"
            Android:background="@drawable/login_email_bg_round_rect_shape"
            Android:gravity="center_horizontal"
            Android:padding="10dp"
            Android:text="POST A QUERY" />
    </LinearLayout>

        <!--<ListView
            Android:id="@+id/list"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">
        </ListView>-->

    <Android.support.v7.widget.RecyclerView
        Android:id="@+id/recycler_view"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:scrollbars="vertical" />


    <RelativeLayout
        Android:background="@color/colorAccent"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">
        <TextView
            Android:padding="8dp"
            Android:gravity="center_vertical"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="SIGN OUT" />
        <ImageView
            Android:paddingTop="5dp"
            Android:layout_marginRight="40dp"
            Android:layout_alignParentRight="true"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:src="@drawable/ic_delete_black" />
    </RelativeLayout>
</LinearLayout>
</Android.support.v4.widget.NestedScrollView>

</Android.support.v4.widget.NestedScrollView>
0
Irfan Qureshi

NestedScrollView内にAndroid:nestedScrollingEnabled = "true"タグを追加するだけです。

<Android.support.v4.widget.NestedScrollView
  Android:layout_width="match_parent"
  Android:layout_height="match_parent"
  Android:scrollbars="none"
  Android:nestedScrollingEnabled="true">
   <ListView
      Android:id="@+id/list_myContent"
      Android:layout_width="match_parent"
      Android:layout_height="match_parent"
      Android:scrollbars="vertical">
  </ListView>
0
Aj121

Prokash Sarkar によるこのソリューションは、NestedScrollView内で適切にスクロールできるように、ListViewのコンテンツを拡張するために完全に機能することがわかりました。

親NestedScrollViewでListViewをスクロールできません-Android

これがNestedScrollViewとListViewを検索する他の人に役立つことを願っています。

0
steve-gregory