对于我的应用程序,我使用了一个RecyclerViewinside ScrollView,RecyclerView它的高度基于它使用这个库的内容。滚动正常,但是当我滚动到RecyclerView. 当我滚动ScrollView它本身时,它正在平滑滚动。
RecyclerView
ScrollView
我用来定义的代码RecyclerView:
LinearLayoutManager friendsLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext(), android.support.v7.widget.LinearLayoutManager.VERTICAL, false); mFriendsListView.setLayoutManager(friendsLayoutManager); mFriendsListView.addItemDecoration(new DividerItemDecoration(getActivity().getApplicationContext(), null));
RecyclerView中的ScrollView:
<android.support.v7.widget.RecyclerView android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:id="@+id/friendsList" android:layout_width="match_parent" android:layout_height="wrap_content" />
尝试做:
RecyclerView v = (RecyclerView) findViewById(...); v.setNestedScrollingEnabled(false);
作为替代方案,您可以使用支持设计库修改布局。我猜您当前的布局类似于:
<ScrollView > <LinearLayout > <View > <!-- upper content --> <RecyclerView > <!-- with custom layoutmanager --> </LinearLayout > </ScrollView >
您可以将其修改为:
<CoordinatorLayout > <AppBarLayout > <CollapsingToolbarLayout > <!-- with your content, and layout_scrollFlags="scroll" --> </CollapsingToolbarLayout > </AppBarLayout > <RecyclerView > <!-- with standard layoutManager --> </CoordinatorLayout >
然而,这是一条更长的路,如果您对自定义线性布局管理器没问题,那么只需禁用回收器视图上的嵌套滚动即可。
支持库的发布现在在所有默认sv 23.2中都包含工厂“说唱内容”功能。LayoutManager我没有测试它,但你可能应该更喜欢它而不是你正在使用的那个库。
v 23.2
LayoutManager
<ScrollView > <LinearLayout > <View > <!-- upper content --> <RecyclerView > <!-- with wrap_content --> </LinearLayout > </ScrollView >