example collapsing collapsible bar appbar_scrolling_view_behavior android android-design-library android-collapsingtoolbarlayout android-coordinatorlayout android-appbarlayout

android - collapsing - CardView pulsable dentro de NestedScroll no activa el desplazamiento



expandable toolbar android (3)

Tengo un diseño con CoordinatorLayout, y AppBarLayout y NestedScrollView, dentro de NestedScrollView Tengo varias vistas de tarjeta, todo funciona bien hasta que configuro la posibilidad de hacer clic en las vistas de tarjeta, luego, si comienzo un desplazamiento dentro de CardView, el desplazamiento no funciona.

Este es mi diseño:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_height="256dp" android:layout_width="match_parent" app:contentScrim="?attr/colorPrimary" android:fitsSystemWindows="true" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:fitsSystemWindows="true" app:layout_collapseMode="parallax"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="?attr/actionBarSize" android:layout_width="match_parent" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/nestedScroll" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_gravity="fill_vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="0dp" app:cardUseCompatPadding="true"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <View android:layout_width="80dp" android:layout_height="80dp" android:background="@color/primary" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="4dp" android:paddingLeft="7dp" android:paddingRight="7dp" android:paddingBottom="7dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:lines="1" android:includeFontPadding="false" android:text="Title1" style="@android:style/TextAppearance.Medium" /> <TextView android:lines="2" android:text="Description 1" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> </android.support.v7.widget.CardView> ... </LinearLayout> </android.support.v4.widget.NestedScrollView>


Como lo ha notado la gente, el problema es que cuando el CardView coloca completamente dentro de la pantalla, no activará el desplazamiento desde la tarjeta. El desplazamiento aún funciona desde las vistas dentro de CollapsingToolbarLayout .

Mi solución fue agregar android:layout_marginBottom="100dp" a CardView para que el borde inferior esté fuera de la pantalla, lo que permite el desplazamiento.


El problema llega a la luz del día cuando ScrollView no está lleno de contenido. Creo que es un error muy raro en Android.

La solución''..

<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:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_height="256dp" android:layout_width="match_parent" app:contentScrim="?attr/colorPrimary" android:fitsSystemWindows="true" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:fitsSystemWindows="true" app:layout_collapseMode="parallax"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="?attr/actionBarSize" android:layout_width="match_parent" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/nestedScroll" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_gravity="fill_vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="0dp" app:cardUseCompatPadding="true" android:foreground="?android:attr/selectableItemBackground" android:clickable="true"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <View android:layout_width="80dp" android:layout_height="80dp" android:background="#cdcdcd" android:clickable="true"/> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="4dp" android:paddingLeft="7dp" android:paddingRight="7dp" android:paddingBottom="7dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:lines="1" android:includeFontPadding="false" android:text="Title1" style="@android:style/TextAppearance.Medium"/> <TextView android:lines="2" android:text="Description 1" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> </android.support.v7.widget.CardView> <LinearLayout android:layout_width="match_parent" android:layout_height="1000dp" android:orientation="vertical" android:layout_margin="4dp" android:background="#c1c1c1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20pt" android:text="some content..."/> </LinearLayout> </LinearLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>


Parece el mismo problema que aquí: el desplazamiento no funciona en NestedScrollView cuando se intenta desplazarse desde vistas con eventos de clic

Este es el tipo de solución para su problema https://.com/a/32887429/2165810

Pero también debe usar setPreventCornerOverlap(false) para su CardView para evitar problemas con CardView