CollapsingToolbarLayout不会崩溃

时间:2015-12-19 22:08:33

标签: android android-layout

我遇到了应用内折叠工具栏布局的预期滚动行为问题。为了确保我知道自己在做什么,我创建了一个简单的测试项目,并且能够实现所需的结果,但在该示例中使用了NestedScrollView,并且需要滚动的内容只是RelativeLayout包含带有大量文本的CardView。在真实的应用中,滚动内容为RecyclerView,我认为这是问题所在。就好像RecyclerView正在处理滚动而父FolpsingToolbar被排除在循环之外。

请注意,app:layout_behavior="@string/appbar_scrolling_view_behavior"目前不在布局中。我已经尝试将它添加到各个地方而没有预期的结果。

附件是应用程序的图像,在上面使用折叠工具栏执行了少量滚动而没有降低它的高度。

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.ArticleListActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/toolbar_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/Theme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/theme_primary"
            app:contentScrim="@color/theme_primary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scaleType="centerCrop"
                android:src="@drawable/empty_detail"
                app:layout_collapseMode="parallax" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:contentDescription="@string/app_name"
                    android:src="@drawable/logo" />

            </android.support.v7.widget.Toolbar>

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

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

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

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

    </android.support.v4.widget.SwipeRefreshLayout>

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

enter image description here

1 个答案:

答案 0 :(得分:0)

根据你的代码,缺少的是你必须设置滚动标记&#34;滚动&#34;到工具栏上方的imageview。 我已经完成了类似的事情,正如您在下面的代码中看到的那样,所有对RecyclerView滚动做出反应的视图都有滚动标记,它们位于我们不想要的视图之前滚动这样的工具栏:

 <android.support.design.widget.AppBarLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:id="@+id/collapsingToolbar"
            android:layout_height="wrap_content"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="?attr/colorPrimary"
            >

            <include layout="@layout/movie_details_header_layout" android:id="@+id/headerLayout"
                app:layout_scrollFlags="scroll"
                />

            <android.support.v7.widget.Toolbar
                android:layout_height="56dp"
                android:layout_width="match_parent"
                android:id="@+id/toolbar"
                app:navigationIcon="@drawable/ic_arrow_back"
                android:navigationContentDescription="Back"
                app:layout_collapseParallaxMultiplier="0.7"
                app:layout_collapseMode="pin"
                />
        </android.support.design.widget.CollapsingToolbarLayout>


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