5

CollapsibleToolbarLayout 关于 RecyclerView 的行为似乎被破坏了。设置值时

应用程序:layout_scrollFlags

如果不使用“scroll|enterAlways”,Collabsible 布局将永远不会展开。它总是会收缩,但是当你往下拉的时候,它就不会再膨胀了,所以它只会被锁定在顶部。

如果您使用“scroll|enterAlways”,它会按预期工作,这意味着当您向下滚动时,它会立即将标题扩展到其完整高度。

在不知道的情况下,似乎 Collapsible 布局无法正确确定 RecyclerView 何时位于列表顶部,因为这是在其他情况下何时应展开到全高的标准。

这是我正在测试的布局。java 代码并不重要,它只是用虚拟数据填充recyclerview 并使用LinearLayoutManager。

<?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:layout_width="match_parent"
    android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    android:fitsSystemWindows="true">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:toolbarId="@id/toolbar_id"
        app:contentScrim="@color/white"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar_id"
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:layout_collapseMode="pin"/>

    </android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

</android.support.design.widget.CoordinatorLayout>
4

2 回答 2

13

尝试使用scroll|enterAlways|enterAlwaysCollapsed. 这样,工具栏应始终进入折叠模式,然后在到达同级视图顶部时展开。

于 2015-06-16T15:08:41.597 回答
-1

如果要在 AppBarLayout 下显示带有 RecyclerView 的列表,则应将 RecyclerView XML 放在

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    android:fitsSystemWindows="true">

<android.support.design.widget.CollapsingToolbarLayout
    android:id="@+id/collapsing_toolbar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    app:toolbarId="@id/toolbar_id"
    app:contentScrim="@color/white"
    app:layout_scrollFlags="scroll|exitUntilCollapsed">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar_id"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:layout_collapseMode="pin"/>

</android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</android.support.design.widget.CoordinatorLayout>
于 2015-07-16T15:22:47.637 回答