RecyclerView滚动与ScrollView

时间:2017-03-27 19:34:15

标签: android

我正在使用类似于Google Play app的布局结构。但在我的情况下,我修复了水平RecyclerView容器,所以我更喜欢使用NestedScrollView作为根视图。这是我的布局结构

<NestedScrollView>

    <HeaderView />
    <RecyclerView />

    <HeaderView />
    <RecyclerView />

    <HeaderView />
    <RecyclerView />

</NestedScrollView>

问题在于,当我垂直滚动NestedScrollView并且当它晃动时我无法立即停止并开始滚动RecyclerView,我需要等待一分钟直到滚动停止,移开我的手指,如果它在屏幕上,然后在RecyclerView滚动时尝试滚动RecyclerView和反之亦然。如何删除滚动冲突以使我的布局像Google Play app中一样滚动平滑?

1 个答案:

答案 0 :(得分:-1)

我还为GooglePlay应用程序设计了一个应用程序similer。请按照以下步骤操作:

  1. 将属性app:layout_behavior="@string/appbar_scrolling_view_behavior"添加到android.support.v4.widget.NestedScrollView
  2. 使用RelativeLayout作为android.support.v4.widget.NestedScrollView的直接子项,并将属性android:descendantFocusability="blocksDescendants"添加到RelativeLayout
  3. RelativeLayout内,添加一个垂直LinearLayout作为所有标题视图(TextView)和RecyclerView
  4. 的容器

    这是工作代码的结构。试试这个:

    <android.support.design.widget.CoordinatorLayout>
    
        <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">
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:descendantFocusability="blocksDescendants">
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
    
                    <!-- Header view -->
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="48dp"
                        android:paddingLeft="16dp"
                        android:gravity="center_vertical"
                        android:textSize="14sp"
                        android:textStyle="bold"
                        android:fontFamily="sans-serif"
                        android:textColor="@color/textColorSecondary"
                        android:text="Header"/>
    
                    <android.support.v7.widget.RecyclerView />
    
                    <!-- Header view -->
                    <TextView />
    
                    <android.support.v7.widget.RecyclerView />
    
                    <!-- Header view -->
                    <TextView />
    
                    <android.support.v7.widget.RecyclerView />
    
                    <!-- Header view -->
                    <TextView />
    
                    <android.support.v7.widget.RecyclerView />
    
                    <!-- Header view -->
                    <TextView />
    
                    <android.support.v7.widget.RecyclerView />
    
                    ................
                    ..........................    
                </LinearLayout>
            </RelativeLayout>
    
        </android.support.v4.widget.NestedScrollView>
    </android.support.design.widget.CoordinatorLayout>
    

    希望这会对你有帮助〜