NestedScrollview перекрывает CollapsingToolbarLayout как приложение gmusic

Я хотел бы воспроизвести поведение приложения Android для Android. В этом приложении, когда вы используете вкладку альбома «Моя музыка», начинается список альбомов. За панель действия (оранжевая часть), поскольку она «расширена». Когда вы просматриваете список альбомов, эта оранжевая часть прокручивается вверх, но медленнее, чем список. Когда вы прокручиваете список вниз, «оранжевый блок» также прокручивается вниз. Это поведение не зависит от прокрутки панели инструментов и вкладок.

Я пытаюсь воспроизвести такое поведение с новой библиотекой материалов. Используя в качестве отправной точки детальную активность xml от Cheesquare:

<android.support.design.widget.CoordinatorLayout 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_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|enterAlways|enterAlwaysCollapsed" 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_collapseMode="parallax" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:layout_collapseMode="pin" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingTop="24dp"> <....> </LinearLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout> 

Я попытался использовать фон «imageview» с цветным фоном и попытаться переместить его вместе с nestedview. Если я поместил изображение в CollapsingToolbarLayout с эффектом параллакса, проблема в том, что я не могу сделать его heigh больше, чтобы быть под nestedscrollview. Если я поместил изображение за пределы collapsingToolbarLayout, но внутри NestedScrollView, я не могу изменить «скорость» viewScrolling. Если я поместил изображение за пределы NestedScrollview, он будет нарисован поверх панели инструментов, даже если панель инструментов подсвечена.

Перед библиотекой материалов я использовал представление и обратный вызов scrollview, чтобы перемещать его вверх и вниз, но я хочу использовать новую библиотеку, так как она очень чиста, и удаляет много шаблонов.

Есть идеи?

Фактически, наложение прокрутки в AppBarLayout не требует ничего: вы можете использовать атрибут app:behavior_overlayTop для вашего NestedScrollView для установки количества перекрытий:

 <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" app:behavior_overlapTop="64dp"> 

Обратите внимание, что app:behavior_overlapTop работает только с представлениями, которые имеют app:layout_behavior="@string/appbar_scrolling_view_behavior" поскольку это поведение, которое использует этот атрибут (а не View или родительский просмотрGroup, как обычно применяются атрибуты), следовательно, Префикс behavior_ .

Или установите его программно с помощью setOverlayTop () :

 NestedScrollView scrollView = ... CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) scrollView.getLayoutParams(); AppBarLayout.ScrollingViewBehavior behavior = (AppBarLayout.ScrollingViewBehavior) params.getBehavior(); behavior.setOverlayTop(128); // Note: in pixels