问题
I'm not sure how to implement this.. I want to use:
- Collapsing Toolbar
- "normal" Layout (NestedScrollView)
- RecyclerView
- and navigate by the NavigationDrawer (so the layouts come together in my activity_main.xml)
The issues comes up when I try to use the RecyclerView - because of the NestedScrollView (yeah, the rule "don't place multiple scrollables together" is true)...
But how to achieve this? Is there a possibility to keep the layouts separated in some way?
Info: I am replacing the content of the app in the FrameLayout (see middle section).
Would it be a proper solution to insert multiple NestedScrollViews (in each Fragment one, which should be scrollable)?
Here is my main layout:
<?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"
/>
Thanks in advance.
回答1:
Best way to achieve this is to use only a RecyclerView with an adapter handling different view types.
For the first adapter position, the list item will be your fixed content once in NestedScrollView, and for other positions what you want to use is the RecyclerView items from your current solution.
来源:https://stackoverflow.com/questions/34491137/nestedscrollview-and-recyclerview-issues-how-to-separate-them