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
Descubrí que esta solución de Prokash Sarkar funcionaba perfectamente para expandir el contenido de un ListView, de modo que se pudiera desplazar correctamente dentro de un NestedScrollView.
No se puede desplazar ListView en su versión principal, NestedScrollView - Android
Espero que esto ayude a otros que buscan NestedScrollView y ListView ...
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>