Я создаю представление на основе CoordinatorLayout
.Представление содержит два элемента: View
in CollapsingToolbarLayout
и RecyclerView
в качестве содержимого.Весь контент также обернут в SwipleRefreshLayout
- была проблема с прокруткой вверх, но ее легко исправить (через OnOffsetChangedListener
в AppBar
)
Моя проблема в том, что представление в CollapsingToolbarLayout может быть выше, чемэкран (очень редкий, но возможный), поэтому его нужно прокручивать.
См. этот пример:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<View android:id="@+id/very_big_height"
android:layout_width="match_parent"
android:background="@color/design_default_color_primary"
android:layout_height="2000dp"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dummy_recycler_view"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.SwipeRefreshLayout>
Когда я прокручиваю через панель инструментов, я могу установить свой макет в таком видесостояние:
Синяя область имеет идентификатор very_big_height
, и эта белая область фактически является пустым пространством на экране, поскольку мой RecyclerView имеет высоту wrap_content
и никаких элементоввнутри.
Я все еще могу прокручивать панель приложений через синюю область, и даже более прокручивать ее полностью за пределами экрана.И если я перетаскиваю его, я не вижу его снова.
Мое ожидаемое поведение: AppBar должен прокручиваться только до нижней части экрана.Он не должен скрываться, если нет содержимого ниже. Кроме того, если содержимое соответствует экрану, панель приложений не должна быть прокручиваемой (я нашел решение для отключения прокрутки, когда нет содержимого, но не работает, когда панель приложений не соответствуетэкран.
Спасибо за помощь!