【问题标题】:CoordinatorLayout with RecyclerView带有 RecyclerView 的 CoordinatorLayout
【发布时间】:2015-08-12 04:38:19
【问题描述】:

我有一个 LinearLayout,当我在 RecyclerView 上向上滚动时我想隐藏它,并在我向下滚动时重新出现;行为应该就像工具栏隐藏和重新出现的方式一样。

这是我目前所拥有的:

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

   <LinearLayout
        android:id="@+id/viewToHideOnScroll
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <!-- other stuff inside the LinearLayout -->

   </LinearLayout>

   <RecyclerView
        android:id="@+id/recyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

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

据我目前所知,我可以在viewToHideOnScroll 上指定一个app:layout_behavior 值,以便它根据recyclerView 上的滚动事件平滑滚动进出视图。为此,我必须编写一个自定义类ViewToHideOnScrollBehavior 并覆盖layoutDependsOn 和其他一些方法(onNestedScroll?)。

如果那是正确的,这就是我所拥有的:

public class ViewToHideOnScrollBehavior extends CoordinatorLayout.Behavior<LinearLayout> {

public ViewToHideOnScrollBehavior(Context context, AttributeSet attrs) {}

    @Override
    public boolean layoutDependsOn(CoordinatorLayout parent, LinearLayout child, View dependency) {
        return dependency instanceof RecyclerView;
    }

    // some other method to override, I don't know
}

谁能给我一个提示,还是我做错了?

我一直在关注https://lab.getbase.com/introduction-to-coordinator-layout-on-android/

【问题讨论】:

    标签: android android-recyclerview android-coordinatorlayout


    【解决方案1】:

    您必须将 LinearLayout 放入 AppBar 布局中,当用户滚动您的线性布局隐藏时,您必须创建如下所示的 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:id="@+id/main_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <android.support.design.widget.AppBarLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    
         <LinearLayout
                    android:id="@+id/lytSearchBar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/colorPrimary"
                    android:gravity="center_vertical"
                    android:orientation="horizontal"
                    android:padding="@dimen/fivedp"
                    app:layout_scrollFlags="scroll|enterAlways" // layout_scrollFlags for scroll layout
                    android:visibility="visible">
    
         </LinearLayout>
         </android.support.design.widget.AppBarLayout>
    
          <android.support.v7.widget.RecyclerView
                android:id="@+id/rvOrderList"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@id/lytSearchBar"
                android:paddingTop="@dimen/tendp"
                app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    

    在 RecyclerView 中不要忘记添加属性 app:layout_behaviour 如上面的 xml 所示。

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 2016-03-21
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多