我试图实现一个布局,其中包含RecyclerView和ScrollView在相同的布局。

布局模板:

<RelativeLayout>
    <ScrollView android:id="@+id/myScrollView">

       <unrelated data>...</unrealated data>

       <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/my_recycler_view" />
    </ScrollView>   
</RelativeLayout>

问题:我可以滚动到ScrollView的最后一个元素。

我尝试过的事情:

在ScrollView里面的卡片视图(现在ScrollView包含RecyclerView) -可以看到卡片直到RecyclerView。 最初的想法是使用RecyclerView来实现这个ViewGroup而不是ScrollView,其中一个视图类型是CardView,但我得到了与ScrollView完全相同的结果。


当前回答

抱歉迟到了,但似乎有另一种解决方案可以完美地解决你提到的情况。

如果在回收器视图中使用回收器视图,它似乎工作得非常好。我亲自尝试并使用过它,它似乎一点也不慢,一点也不突兀。现在我不确定这是否是一个好做法,但嵌套多个回收器视图,甚至嵌套滚动视图减慢。但这似乎工作得很好。请试一试。我确信嵌套在这方面是完全没问题的。

其他回答

抱歉迟到了,但似乎有另一种解决方案可以完美地解决你提到的情况。

如果在回收器视图中使用回收器视图,它似乎工作得非常好。我亲自尝试并使用过它,它似乎一点也不慢,一点也不突兀。现在我不确定这是否是一个好做法,但嵌套多个回收器视图,甚至嵌套滚动视图减慢。但这似乎工作得很好。请试一试。我确信嵌套在这方面是完全没问题的。

试试这个。很晚的回答,但肯定对将来的任何人都有帮助。

将ScrollView更改为NestedScrollView: < android.support.v4.widget.NestedScrollView > < android.support.v7.widget.RecyclerView … ... /> < / android.support.v4.widget.NestedScrollView > 在你的UI代码中,为Recyclerview更新它: recyclerView.setNestedScrollingEnabled(假); recyclerView.setHasFixedSize(假);

更新: 这个答案现在已经过时了,因为有像NestedScrollView和RecyclerView这样的小部件支持嵌套滚动。

永远不要把一个可滚动视图放在另一个可滚动视图中!

我建议你让你的主布局回收者视图,并把你的视图作为项目回收者视图。

看一下这个例子,它展示了如何在回收视图适配器中使用多个视图。 链接到示例

你也可以重写LinearLayoutManager来让RecyclerView平滑滚动:

@Override
public boolean canScrollVertically(){
    return false;
}

将这一行添加到您的RecyclerView xml视图中:

android:nestedScrollingEnabled="false"

和您的RecyclerView将顺利滚动灵活的高度。

希望能有所帮助。