ListView ne s'étend pas à L'intérieur de NestedScrollView

j'utilise CoordinatorLayout dans ma page d'activité. En ce qu'il y a ListView sous la barre d'app. Mais ça ne marche pas quand j'utilise ListView au lieu de NestedScrollView . Et si je mets ListView à l'intérieur de NestedScrollView , ListView ne se dilate pas

30
demandé sur JoeYo 2015-10-01 09:56:18

10 réponses

pour que le CoordinatorLayout fonctionne correctement, vous avez besoin de l'enfant défilant pour mettre en œuvre NestedScrollingChild . Ces classes sont NestedScrollView et RecyclerView .

pour le dire court - il suffit d'utiliser un RecyclerView pour votre contenu défilant et il fonctionnera correctement:)

comme note, Je ne vois pas pourquoi vous utiliseriez encore un ListView . Je sais que c'est une habitude et c'est plus facile à installer (parce que vous l'avez fait plusieurs fois), mais l'utilisation d'un RecyclerView est la manière recommandée de toute façon.

30
répondu Vesko 2015-10-01 07:02:21

vous pouvez le corriger lorsque vous ajoutez addtribute android:fillViewport="true" dans android.support.v4.widget.NestedScrollView :). Ce mon code.

<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>
55
répondu Chung Nguyen 2015-12-07 04:30:40

à partir de Lollipop vous pouvez utiliser

setNestedScrollingEnabled(true);

sur votre ListView/GridView/ScrollableView. De la documentation

activer ou désactiver le défilement emboîté pour cette vue

si vous avez besoin de rétrocompatibilité avec l'ancienne version de L'OS, vous devrez utiliser le RecyclerView . Vous pouvez lire la suite ici

Edit. ViewCompat a la méthode statique setNestedScrollingEnabled(View, boolean) . Par exemple.

ViewCompat.setNestedScrollingEnabled(listView, true)

merci à @Dogcat pour l'avoir pointé du doigt

34
répondu Blackbelt 2017-03-07 12:18:33

vient de mettre android:fillViewport="true" à l'intérieur NestedScrollView Tag

10
répondu Shivam 2016-04-03 10:03:06

c'est ce qui a fonctionné pour moi.

set android:fillViewport="true" sur le NestedScrollView

ajouter un élément de disposition comme enfant à NestedScrollView . Dans mon cas LinearLayout et puis mettre android:nestedScrollingEnabled="true" sur ListView Faire ListView un enfant de LinearLayout

Good to go

2
répondu Louis Nuhoho 2018-02-14 11:46:30

vous allez faire défiler listview. L'espoir de l'aide.

<?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>
1
répondu Tuan Nguyen 2018-05-18 05:24:23

vous ne pouvez pas faire défiler listview dans une fenêtre nestedscrollview.Utilisation Recyclerview avec 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="irfan123@gmail.com" />
        </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
répondu Irfan Qureshi 2016-11-21 11:46:48

il suffit d'ajouter android:nestedScrollingEnabled=" true " étiquette à l'intérieur de votre NestedScrollView.

<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
répondu Aj121 2016-12-20 06:10:56

j'ai trouvé que cette solution par Prokash Sarkar fonctionnait parfaitement pour étendre le contenu d'un ListView afin qu'il puisse correctement faire défiler à l'intérieur D'un NestedScrollView.

Can't ScrollView in its parent NestedScrollView-Android

Espérons que cela aide d'autres personnes qui recherche pour NestedScrollView et ListView..

0
répondu steve-gregory 2018-03-22 16:29:47

ci-dessous code travaillé pour moi:

ViewCompat.setNestedScrollingEnabled(listView, true);

Votre ListView devrait être à l'intérieur NestedScrollView

0
répondu Swati Singh 2018-05-24 06:21:46