style library layout_collapsemode example error coordinatorlayout appbarlayout android android-coordinatorlayout android-appbarlayout nestedscrollview

android - library - coordinatorlayout style



ListView no se expande dentro de NestedScrollView (10)

Debajo del código funcionó para mí:

ViewCompat.setNestedScrollingEnabled(listView, true);

Tu ListView debería estar dentro de NestedScrollView

Estoy utilizando CoordinatorLayout en mi página de actividades. En eso hay ListView debajo de la barra de la aplicación. Pero no funciona cuando uso ListView lugar de NestedScrollView . Y si pongo ListView dentro de NestedScrollView , ListView no se expande



No puede desplazar la vista de lista dentro de una vista de desplazamiento anidada.Utilizar la vista Recycler con vista de desplazamiento anidada

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


Para que CoordinatorLayout funcione correctamente, necesita que el niño desplazable implemente NestedScrollingChild . Tales clases son NestedScrollView y RecyclerView .

Para decirlo brevemente, solo usa un RecyclerView para tu contenido de desplazamiento y funcionará correctamente :)

PD: Como nota al margen, no veo una razón por la que ListView un ListView más. Sé que es un hábito y es más fácil de configurar (porque lo ha hecho muchas veces), pero usar RecyclerView es la manera recomendada de todos modos.


Simplemente agregue la etiqueta android: nestedScrollingEnabled = "true" dentro de su 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>


Simplemente ponga android:fillViewport="true" dentro de usted Etiqueta NestedScrollView


Tu lista se desplazará. Espero ayuda.

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


en Lollipop en adelante puedes usar

setNestedScrollingEnabled(true);

en su ListView / GridView / ScrollableView. De la documentación

Habilitar o deshabilitar el desplazamiento anidado para esta vista

si necesita compatibilidad con versiones anteriores del sistema operativo, tendrá que usar RecyclerView . Puedes leer más here

Editar. ViewCompat tiene el método estático setNestedScrollingEnabled(View, boolean) . P.ej.

ViewCompat.setNestedScrollingEnabled(listView, true)

gracias a @Dogcat por señalarlo


esto es lo que funcionó para mí.

establece android:fillViewport="true" en el NestedScrollView

agregue un elemento de diseño como NestedScrollView a NestedScrollView . En mi caso LinearLayout y luego establezco android:nestedScrollingEnabled="true" en ListView Make ListView un hijo de LinearLayout

Bueno para ir


puede solucionarlo cuando agrega addtribute android:fillViewport="true" en android.support.v4.widget.NestedScrollView :). Este es mi código

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