У меня возникают некоторые проблемы при настройке FloatingActionButton в макете с CollapsingToolbarLayout.
Источники:
Я использую этот проект в качестве базы: Android-Material-Design-for-pre-Lollipop
Сообщение в блоге: Создание заголовка прокрутки Parallax с вкладками в Android
Компоновка:
В основном у вас есть следующая структура в основном макете:
-CoordinatorLayout
-AppBar
-CollapsingToolbar
-Image (Parallax)
-Toolbar
-TabLayout
-ViewPager
Затем адаптер ViewPager предоставляет содержимое каждой вкладки.
Проблема:
Я хочу, чтобы у некоторых вкладок была своя кнопка с плавающим действием. Поскольку не все вкладки будут иметь его, я бы хотел добавить его в адаптер ViewPager.
Но при добавлении кнопки в макет страницы она должна появиться в конце прокрутки прокручиваемого содержимого, то есть вам нужно прокрутить сворачивающуюся полосу вниз, чтобы увидеть плавающую кнопку.
В отличие от этого, если вы добавляете FloatingActionButton к основному макету (на том же уровне, что и ViewPager), вы используете одну «общую» кнопку для всех вкладок, поэтому вам необходимо создать связь между содержимым PagerAdapter (в моем случае фрагменты) и основной макет для того, чтобы:
- Скрыть и показать кнопку в соответствии с текущей страницей
- Обновить значок + метку доступности
- Распространение события клика на фрагмент ViewPager
Этот второй вариант звучит не очень чисто.
Обновление:
Я заметил, что на некоторых из моих вкладок также есть список с нижним колонтитулом, который нужно обрезать снизу и после реализации appbar_scrolling_view_behavior
тоже не работает = (
Похожие вопросы:
Складная панель инструментов - сделать нижний колонтитул фрагмента всегда видимым в Android : Награда за более чистое решение
Как я могу решить эту проблему?
MainLayout:
<?xml version="1.0" encoding="utf-8"?>
<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/htab_maincontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/htab_appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/htab_collapse_toolbar"
android:layout_width="match_parent"
android:layout_height="256dp"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
app:titleEnabled="false">
<ImageView
android:id="@+id/htab_header"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/header"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"/>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3"
android:background="@android:color/black"
android:fitsSystemWindows="true"/>
<android.support.v7.widget.Toolbar
android:id="@+id/htab_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="top"
android:layout_marginBottom="48dp"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<android.support.design.widget.TabLayout
android:id="@+id/htab_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:tabIndicatorColor="@android:color/white"
app:tabSelectedTextColor="@android:color/white"
app:tabTextColor="@color/white_70"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/htab_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>