首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android解决RecyclerView中的item显示不全方案

Android解决RecyclerView中的item显示不全方案

作者头像
SoullessCoder
发布2021-09-07 16:58:11
2.6K0
发布2021-09-07 16:58:11
举报
文章被收录于专栏:CodeCode

最近的项目中实现订单确定页面。需要使用ScrollView嵌套RecyclerView,当RecyclerView中的item数量比较多时,就会出现item只显示一部分数据,并没有将用户勾选的商品数量全部显示出来,这个时候就需要我们做一下处理了。

下面来说两种解决方案:

1、使用5.0的新控件NestedScrollView替换ScrollView. NestedScrollView支持嵌套滑动,既能填item显示不全的坑,又可以填嵌套滑动卡顿的坑。不了解的童鞋可以去学习一波,这里就不做详细的说明了。

用法: (1)、布局文件中将ScrollView替换成"android.support.v4.widget.NestedScrollView". (2)、使用代码设置recyclerView.setNestedScrollingEnabled(false)即可。

2、在RecyclerView的外面嵌套一层RelativeLayout,然后添加属性 android:descendantFocusability="blocksDescendants".

用法参考:

<RelativeLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:descendantFocusability="blocksDescendants">
     
        <android.support.v7.widget.RecyclerView
             android:id="@+id/recyclerView"
             android:layout_width="match_parent"
             android:layout_height="match_parent"  
             android:overScrollMode="never"/>
             
</RelativeLayout>

说到这我们再来熟悉一下 android:descendantFocusability="blocksDescendants"属性的作用:

该属性的含义是:当一个view获取焦点时,定义ViewGroup和其子控件两者之间的关系。

它一共有3个属性值,它们分别是:

beforeDescendants:viewGroup会优先子类控件而获取焦点;

afterDescendants:viewGroup只有当子类控件不需要获取焦点的时候才去获取焦点;

blocksDescendants:viewGroup会覆盖子类控件而直接获取焦点。

两种方案到这里就介绍完了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-2-19 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档