代码之家  ›  专栏  ›  技术社区  ›  Olexii Muraviov

使用RecyclerView滚动协调器布局中的某些视图

  •  1
  • Olexii Muraviov  · 技术社区  · 8 年前

    你好,我有 CoordinatorLayout 具有 AppBar , Toolbar RecyclerView .

    <?xml version="1.0" encoding="utf-8"?>    
    <android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">
    
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="0dp"
        android:fitsSystemWindows="true"
        app:elevation="0dp">
    
        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:elevation="8dp"
            android:fitsSystemWindows="true"
            app:contentInsetEnd="0dp"
            app:contentInsetStart="0dp"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"/>
    
    </android.support.design.widget.AppBarLayout>
    
    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_photos"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:nestedScrollingEnabled="false"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
    </android.support.design.widget.CoordinatorLayout>
    

    我想离开 工具栏 在上面,不想移动它,但让 LinearLayout 在其下方滚动(在 工具栏 ).

    我还发现RecyclerView不适用于协调器布局。它不会触发AppBar滚动事件。如果我将它包装在NestedSCrollView中,它会工作,但RecyclerView不会回收视图持有者,所以它对我不起作用。

    谁能帮助实现这一点?

    3 回复  |  直到 8 年前
        1
  •  0
  •   Esther Margarita Noa Rodríguez    8 年前

    像这样试试

       ...
        </android.support.design.widget.AppBarLayout>
    
         <android.support.v4.widget.NestedScrollView
                                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/rv_photos"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:nestedScrollingEnabled="false"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior"
                    />
    </android.support.v4.widget.NestedScrollView>
    
        2
  •  0
  •   aksh1618    8 年前

    将工具栏和线性布局放在 CollapsingToolbarLayout . 然后使用适当的折叠模式属性。例如,您可以使用 pin 用于工具栏和 parallax 对于线性布局:

    <android.support.design.widget.AppBarLayout>
        <android.support.design.widget.CollapsingToolbarLayout
            ...
            app:layout_scrollFlags="scroll|exitUntilCollapsed">
    
            <android.support.v7.widget.Toolbar
                ...
                app:layout_collapseMode="pin"/>
    
            <LinearLayout
                ...
                app:layout_collapseMode="parallax"/>
    
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
    

    您需要在应用程序的 build.gradle :

    implementation "com.android.support:design:$support_library_version"

    More on coordinator and collapsing toolbar layouts

        3
  •  0
  •   Olexii Muraviov    8 年前