CollapsingToolbarLayout ImageView не прокручивается

Используя пример библиотеки cheesesquare – android, можно ли сделать прокрутку Header ImageView прокруткой?

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

Обратите внимание, что я добавил добавленный android:fillViewport="true" в NestedScrollView а также добавил app:layout_scrollFlags="scroll" к ImageView но при попытке прокрутки из ImageView ничего не происходит.

Solutions Collecting From Web of "CollapsingToolbarLayout ImageView не прокручивается"

Хорошо, я сделал некоторые исследования в отчетах об ошибках, и это известная ошибка в Design Support Library .

Просмотрите отчет об ошибке здесь.

выдержка

Я взглянул на реализацию, которая поддерживает AppBarLayout CoordinatorLayout / AppBarLayout / Behavior и т. AppBarLayout AppBarLayout.Behavior по умолчанию использует поведение, определенное в AppBarLayout.Behavior . Это расширяет ViewOffsetBehavior которая, в свою очередь, расширяет Behavior . У базового класса Behavior есть методы onInterceptTouchEvent() и onTouchEvent() , оба из которых возвращают false (что означает «мы не хотим обрабатывать события касания»). Эти методы не переопределяются либо ViewOffsetBehavior либо AppBarLayout.Behavior , что означает, что прикосновение остается необработанным – вот почему оно ничего не делает.

Возможным обходным AppBarLayout.Behavior для сторонних разработчиков будет расширение AppBarLayout.Behavior и реализация onInterceptTouchEvent() и onTouchEvent() и соответственно управление панелью приложений.

Видео

Они показывают текущее и предполагаемое поведение. Это также из отчета об ошибке.

Я нашел обходной путь путем внедрения imageView в 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> 

Но я не тестировал его в prod, так как я встретил еще одну проблему с переходом на верхний жест, который прерывается, когда recyclerview достигает вершины (как объясняется в отчете об ошибке).

Из тестирования этого в библиотеке поддержки 23.1.1 эта проблема, похоже, исправлена.

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

Теперь вы можете добавить в свой CollapsingToolbarLayout что угодно, ImageView, RelativeLayout, TextView и прокручивать их по своему усмотрению.