使用框架布局中的RecyclerView滚动工具栏行为

时间:2015-10-22 16:46:44

标签: android

我希望我的工具栏可以折叠并重新出现,这取决于我在回收站视图中向上或向下分页的时间。

我在启动时将片段加载到FrameLayout容器(left_container)中时添加了我的recycleler视图。似乎我不能让它工作,它什么都不做。

以下是我的活动的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">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:elevation="8dp">

            <android.support.v7.widget.Toolbar
                android:id="@+id/topToolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="?attr/colorPrimary"
                android:minHeight="?attr/actionBarSize"
                app:layout_scrollFlags="scroll|enterAlways" />

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

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/appBarLayout"
            android:orientation="horizontal">

            <FrameLayout
                android:id="@+id/left_container"
                android:layout_width="0px"
                android:layout_height="match_parent"
                android:layout_weight="1"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"></FrameLayout>

            <FrameLayout
                android:id="@+id/right_container"
                android:layout_width="0px"
                android:layout_height="match_parent"
                android:layout_weight="0"></FrameLayout>

        </LinearLayout>

    </RelativeLayout>

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

<android.support.design.widget.NavigationView
    android:id="@+id/nav_draw"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/navigation_drawer_header"
    app:menu="@menu/navigation_drawer" />

这是我片段的XML。

<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipe_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

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

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

如果有人能指出我正确的方向,我会非常感激!感谢。

2 个答案:

答案 0 :(得分:0)

你的布局错了。 CoordinatorLayout必须是具有行为的视图的父级。作为RelativeLayout的孩子,您有CoordinatorLayout。我建议你阅读this article,其中有很多关于AppBar滚动行为的例子

答案 1 :(得分:0)

尝试在SwipeRefreshLayout中添加片段和AppBarLayout及其子(工具栏)中的Coordinator布局。如果Recycler视图和AppBarLayout是协调器布局的直接子节点,则可以实现可滚动行为

<android.support.v4.widget.SwipeRefreshLayout
 android:id="@+id/swipe_container"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
    <android.support.design.widget.CoordinatorLayout             
     android:layout_width="match_parent"
     android:layout_height="match_parent">

         <android.support.design.widget.AppBarLayout
          android:id="@+id/appBarLayout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
          app:elevation="8dp">

              <android.support.v7.widget.Toolbar
               android:id="@+id/topToolbar"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:background="?attr/colorPrimary"
               android:minHeight="?attr/actionBarSize"
               app:layout_scrollFlags="scroll|enterAlways" />

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

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

    </android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.SwipeRefreshLayout>`