首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ScrollView中的RecyclerView不起作用

ScrollView中的RecyclerView不起作用
EN

Stack Overflow用户
提问于 2014-11-23 06:07:36
回答 26查看 238K关注 0票数 319

我正在尝试实现一个在同一布局中包含RecyclerView和ScrollView的布局。

布局模板:

代码语言:javascript
复制
<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的最后一个元素

我尝试过的事情:

  1. ScrollView内部的卡片视图(现在ScrollView包含RecyclerView) -在RecyclerView
  2. initial考虑使用RecyclerView而不是ScrollView来实现这个viewGroup之前,我可以看到卡片,其中一个视图类型是CardView,但是我得到了与same完全相同的结果
EN

回答 26

Stack Overflow用户

回答已采纳

发布于 2016-05-20 13:42:12

使用NestedScrollView而不是ScrollView

请通过NestedScrollView reference document了解更多信息。

并向您的RecyclerView添加recyclerView.setNestedScrollingEnabled(false);

票数 764
EN

Stack Overflow用户

发布于 2016-08-17 19:29:19

我知道我来晚了,但即使在谷歌修复了android.support.v7.widget.RecyclerView之后,这个问题仍然存在

我现在得到的问题是RecyclerViewlayout_height=wrap_content没有采取高度的ScrollView内部的所有项目的问题,只有发生在棉花糖和Nougat+ (API23,24,25)版本。

(更新:用android.support.v4.widget.NestedScrollView替换ScrollView在所有版本上都有效。不知何故,我错过了对的测试。将其作为演示添加到我的github项目中。)

在尝试了不同的方法之后,我找到了解决此问题的方法。

下面是我的布局结构:

代码语言:javascript
复制
<ScrollView>
  <LinearLayout> (vertical - this is the only child of scrollview)
     <SomeViews>
     <RecyclerView> (layout_height=wrap_content)
     <SomeOtherViews>

解决方法是使用RelativeLayout包装RecyclerView。不要问我是如何找到此解决方法的!¯\_(ツ)_/¯

代码语言:javascript
复制
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants">

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>

GitHub项目- https://github.com/amardeshbd/android-recycler-view-wrap-content上提供了完整的示例

这是一个演示屏幕视频,展示了修复的实际操作:

票数 112
EN

Stack Overflow用户

发布于 2015-02-13 19:08:03

尽管建议

永远不应该将可滚动视图放在另一个可滚动视图中

是一个合理的建议,但是如果你在回收器视图上设置一个固定的高度,它应该可以很好地工作。

如果您知道适配器项布局的高度,您可以只计算RecyclerView的高度。

代码语言:javascript
复制
int viewHeight = adapterItemSize * adapterData.size();
recyclerView.getLayoutParams().height = viewHeight;
票数 57
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27083091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档