我的布局如下:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
<ImageView
android:layout_width="match_parent"
android:layout_height="160dp"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="52dp"
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="com.example.CardViewBehavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<FrameLayout
android:id="@+id/fixedBanner"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</FrameLayout>
<FrameLayout
android:id="@+id/card1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- random content -->
</FrameLayout>
<FrameLayout
android:id="@+id/card2"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</layout>
从fixedBanner
或card1
向下滚动(手指向上)时,appBarLayout
首先折叠,然后nestedScrollView
向下滚动。但是,如果从recyclerView
向下滚动,则recyclerView
开始滚动。我希望nestedScrollView
在recyclerView
之前先向下滚动。
我尝试使用在CardViewBehavior
上设置的自定义nestedScrollView
,如果appBarLayout
没有完全折叠并且在{{1}中仍有滚动范围,它将覆盖onNestedPreScroll以消耗滚动增量}。
但是,如果我在nestedScrollView
上滑动得足够快,则recyclerView
在recyclerView
完全滚动到底部之前开始猛冲。我尝试覆盖nestedScrollView
中的onNestedPreFling
和onNestedFling
,但是当RecyclerView开始自行翻转时,似乎从未调用过这两个方法。
如何确保在CardViewBehavior
开始滚动之前,nestedScrollView
滚动到底部?
答案 0 :(得分:0)
扩展NestedScrollView
并直接覆盖onNestedPreScroll
方法。
(在https://www.androiddesignpatterns.com/2018/01/experimenting-with-nested-scrolling.html上找到了解决方案)