CollapsingToolbarLayout ImageView no se puede desplazar

Usando cheesquare – android soporte biblioteca ejemplo es posible hacer el Header ImageView scroll-able?

 <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="@dimen/detail_backdrop_height" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:fitsSystemWindows="true"> <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" app:expandedTitleMarginStart="48dp" app:expandedTitleMarginEnd="64dp"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:fitsSystemWindows="true" app:layout_scrollFlags="scroll" app:layout_collapseMode="parallax" /> ... </android.support.design.widget.CollapsingToolbarLayout> <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"> .... 

Tenga en cuenta que he añadido android:fillViewport="true" añadido android:fillViewport="true" a NestedScrollView y también agregó app:layout_scrollFlags="scroll" a la ImageView pero cuando se trata de desplazarse desde el ImageView nada sucede.

Aceptar, hice algunas investigaciones en los informes de errores, y esto es un error conocido dentro de la Design Support Library .

Echa un vistazo al informe de errores aquí

Extracto

He echado un vistazo a la implementación que respalda CoordinatorLayout / AppBarLayout / las clases de Behavior , etc. El AppBarLayout utiliza el comportamiento definido en AppBarLayout.Behavior por defecto. Esto amplía ViewOffsetBehavior que a su vez amplía Behavior . La clase de Behavior base tiene los métodos onInterceptTouchEvent() y onTouchEvent() , los cuales devuelven false (que significa "no queremos manejar eventos táctiles"). Estos métodos no son anulados por ViewOffsetBehavior o AppBarLayout.Behavior , lo que significa que el toque se deja sin AppBarLayout.Behavior , por lo que no hace nada.

Una solución posible para los desarrolladores de terceros sería extender AppBarLayout.Behavior e implementar onInterceptTouchEvent() y onTouchEvent() y manipular la barra de aplicaciones en consecuencia.

Videos

Estos muestran el comportamiento actual y previsto. Estos son también del informe de errores.

Encontré una solución alternativa incrustando el imageView en un NestedScrollView:

  <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:id="@+id/appbar" android:background="@color/transparent" android:layout_width="match_parent"> <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/transparent" app:toolbarId="@+id/toolbar" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_collapseMode="parallax" app:layout_scrollFlags="scroll" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <ImageView tools:ignore="UnusedAttribute" tools:src="@drawable/placeholder" android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:adjustViewBounds="true" android:scaleType="centerCrop" android:minHeight="200dp"/> </android.support.v4.widget.NestedScrollView> <android.support.v7.widget.Toolbar android:layout_height="?attr/actionBarSize" android:id="@+id/toolbar" android:elevation="0dp" android:layout_width="match_parent" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> 

Pero no lo he probado en prod como me encontré con otro problema con el gesto fling to top que se interrumpe cuando el recyclerview llega a la cima (como se explica en el informe de errores).

Al probar esto en la biblioteca de soporte 23.1.1, este problema parece haber sido corregido.

 compile 'com.android.support:design:23.1.1' 

Ahora puede poner en su CollapsingToolbarLayout cualquier cosa, ImageView, RelativeLayout, TextView y se desplazará como se pretende.

  • Collapsing Toolbar con la imagen de url?
  • CollapsingToolbarDescargar y ocultar la barra de herramientas mientras se desplaza
  • ¿Cómo mostrar el logotipo de la barra de herramientas, icono, título, subtítulo cuando se envuelve en un CollapsingToolbarLayout?
  • Título en CollapsingToolbarLayout expandido no se muestra correctamente
  • CollapsingToolbarLayout no funciona correctamente
  • Vista de desplazamiento superpuesta con AppBarLayout
  • Las transiciones de elementos compartidos no funcionan cuando se combinan con un CoordinatorLayout y CollapsingToolbarLayout
  • Barra de herramientas de colapso animado suave con Android Design Support Library
  • Android CollapsingToolbarLayout colapse Listener
  • CollapsingToolbarLayout setTitle () no se actualiza a menos que se colapse
  • Agregar FloatingActionButton en el diseño de barra de herramientas de contracción
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.