Я хочу реализовать шаблон «Гибкое пространство с перекрывающимся содержимым» из методов прокрутки Material design , например, в этом видео :
Мой XML-макет сейчас выглядит так:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="192dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
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">
<....>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
Есть ли простой способ сделать это с помощью библиотеки дизайна? Или мне нужно создать собственный CoordinatorLayout.Behavior для этого?
android
android-design-library
android-collapsingtoolbarlayout
ianhanniballake
источник
источник
Ответы:
Фактически, наложение прокручиваемого представления с AppBarLayout - это включенная функция библиотеки поддержки дизайна Android : вы можете использовать
app:behavior_overlapTop
атрибут в своемNestedScrollView
(или любом представлении, использующем ScrollingViewBehavior ), чтобы установить величину перекрытия:Обратите внимание, что
app:behavior_overlapTop
работает только с представлениями, которые имеютapp:layout_behavior="@string/appbar_scrolling_view_behavior"
атрибут, поскольку именно поведение использует атрибут (а не представление или родительская группа представлений, как атрибуты обычно применяются), отсюда иbehavior_
префикс.Или установите его программно через setOverlayTop () :
источник
layout_behavior
иbehavior_overlapTop
) оказывается позади своего брата AppBarLayout. Я пробовал изменить порядок в XML, но, похоже, это не помогло. Есть идеи, в чем может быть проблема?error no resource identifier found for attribute behavior_overlayTop
behavior_overlapTop
ноsetOverlayTop()
- перекрытие против наложения. Убедитесь, что вы используете правильный!В дополнение к принятому ответу вызовите setTitleEnabled (false) на CollapsingToolbarLayout, чтобы заголовок оставался фиксированным вверху, как в примере.
Как это:
или добавив его в xml вот так:
В противном случае заголовок может исчезнуть за перекрывающимся контентом, если, конечно, это не то поведение, которое вы хотите.
источник