NestedScrollView和RecyclerView问题,如何分开它们?

时间:2015-12-28 09:46:58

标签: android layout android-recyclerview nestedscrollview

我不确定如何实现这个..我想使用:

  1. 折叠工具栏
  2. “普通”布局(NestedScrollView)
  3. RecyclerView
  4. 通过NavigationDrawer导航(因此布局在我的activity_main.xml中汇总)
  5. 当我尝试使用RecyclerView时会出现问题 - 因为NestedScrollView(是的,规则“不要将多个可滚动放在一起”是真的)......

    但如何实现这一目标?是否有可能以某种方式保持布局分离?

    信息:我正在替换FrameLayout中应用的内容(参见中间部分)。

    插入多个NestedScrollViews(在每个Fragment一个,应该可滚动)是否是一个合适的解决方案?

    这是我的主要布局:

    <?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"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="false"
        android:background="@color/main_frame"
        >
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="192dp"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            >
    
            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapsing_toolbar"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                app:contentScrim="@color/colorPrimary"
                app:expandedTitleMarginBottom="32dp"
                app:expandedTitleMarginEnd="64dp"
                app:expandedTitleMarginStart="48dp"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"
                >
    
                <ImageView
                    android:id="@+id/header"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@color/colorPrimary"
                    android:fitsSystemWindows="true"
                    android:scaleType="centerCrop"
                    app:layout_collapseMode="parallax"
                    />
    
                <include
                    android:id="@+id/toolbar"
                    layout="@layout/toolbar_overlay"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="pin"
                    />
    
            </android.support.design.widget.CollapsingToolbarLayout>
    
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:id="@+id/nestedScrollView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            >
    
            <FrameLayout
                android:id="@+id/main_frame"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/toolbar"
                >
            </FrameLayout>
    
        </android.support.v4.widget.NestedScrollView>
    
    </android.support.design.widget.CoordinatorLayout>
    
    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_gravity="start"
        android:background="@color/colorPrimaryNavDrawer"
        app:headerLayout="@layout/nav_drawer_header"
        app:menu="@menu/nav_drawer_items"
        />
    

    提前致谢。

1 个答案:

答案 0 :(得分:2)

实现此目的的最佳方法是仅使用RecyclerView和适配器处理不同的视图类型。 对于第一个适配器位置,列表项将是NestedScrollView中的固定内容,而对于其他位置,您要使用的是当前解决方案中的RecyclerView项。