解决ScrollView嵌套RecyclerView出现item显示不全的问题
问题:ScrollView嵌套RecyclerView时,RecyclerView的item显示不全
出现问题不要慌,耐心解决才是王道,哈哈。首先说下出现这个问题的情景吧,首先声明这个问题在23版本以上出现的,23版本是android 6.0版本,是的当我们targetSdkVersion=23的时候(也就是我们兼容到23版本)是没有问题的,一但兼容到23版本以上就会出现这个问题,这个坑也是第一次踩到,发表个博客警戒下自己,同时也希望可以帮助你顺利的填上这个坑。
首先这个问题的解决方案有3种(有效的,无效的咱们略过)
第一种:既然这个问题是23版本以上的问题(不包括23版本),那么我们就只兼容到23版本就OK喽,就是修改app的build.gradle的targetSdkVersion = 23 和 compileSdkVersion = 23,这个问题就可以顺利解决,但是现在市场上7.0可以说已经普遍了,8.0手机也已经出了,只兼容到6.0版本显然不是我们想要的结果,那么接下来还有2种解决方案,搬个板凳坐下来认真听下面两种吧。
第二种:在你的RecyclerView上再嵌套一层RelativeLayout然后添加属性 android:descendantFocusability="blocksDescendants",既然提到了这个属性就说下它的意思吧,知道的同学再复习一遍呗,巩固巩固更牢靠。
首先该属性android:descendantFocusability的含义是:当一个view获取焦点时,定义ViewGroup和其子控件两者之间的关系。
它一共有3个属性值,它们分别是:
beforeDescendants:viewGroup会优先子类控件而获取焦点
afterDescendants:viewGroup只有当子类控件不需要获取焦点的时候才去获取焦点
blocksDescendants:viewGroup会覆盖子类控件而直接获取焦点
想必了解了这个属性之后,你就会恍然大悟啦。
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:descendantFocusability="blocksDescendants">
- <android.support.v7.widget.RecyclerView
- android:id="@+id/rv_me_window"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingLeft="16dp"
- android:paddingRight="16dp"
- android:overScrollMode="never"/>
- </RelativeLayout>
第三种:当然这种方式是今天偶然在网上看到的,听说既可以填item显示不全的坑,又可以填嵌套滑动卡顿的坑。是不是很期待?哈哈,终极解决方案总是要在最后闪亮登场滴,不过这种方式本人没有测试过,不知道具体的可靠性,同学们需要自行测试,本人用的是第二种方案。
方案是这样的:首先在xml布局中将你的ScrollView替换成android.support.v4.widget.NestedScrollView,并在java代码中设置recyclerView.setNestedScrollingEnabled(false);
这样就可以完美解决啦。NestedScrollView这个东西是5.0的新控件,如果不了解的同学可以自行百度,网上对它的解释有很多,也有很多例子,当时我用它的时候,好像是跟做toolbar联动的时候用过,不过已经记得不太深刻了,好久没有使用这个了,印象当中使用这个好像还需要手动依赖compile 'com.android.support:design:25.0.1'这个库。
最后送上NestedScrollView的相关文章:
①http://blog.csdn.net/mchenys/article/details/51541306
②https://segmentfault.com/a/1190000002873657
好了,不多说了,写这篇文章主要有两点,一是用于警告自己防止再次入坑,二是希望本篇文章可以帮到你,让你尽快脱坑。
解决ScrollView嵌套RecyclerView出现item显示不全的问题的更多相关文章
- 关于ScrollView嵌套RecyclerView出现item显示不全的问题
最近使用ScrollView时,发现里面嵌套Listview显示不全,试过重写Listview的onMeasure(),并没有起作用.然后将ListView换成RecyclerView后,高度还是显示 ...
- 解决ScrollView嵌套RecyclerView的显示及滑动问题
项目中时常需要实现在ScrollView中嵌入一个或多个RecyclerView.这一做法通常会导致如下几个问题 页面滑动卡顿 ScrollView高度显示不正常 RecyclerView内容 ...
- 解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题
我们先看一个效果,问题说的就是中间的Grid效果在Scrollview 嵌套recyclerview显示问题,在Android Api 24是好的,不过在5,1,1版本(api 22)缺出现了问题 最 ...
- Android在开发中的使用技巧之解决ScrollView嵌套RecyclerView出现的系列问题
根据已上线的app里总结出来的实用小技巧 相信大家都遇到过ScrollView嵌套RecyclerView或者RecyclerView嵌套RecyclerView来使用, 也会遇到一堆奇奇怪怪的问题, ...
- Android 解决ScrollView嵌套RecyclerView导致滑动不流畅的问题
最近做的项目中遇到了ScrollView嵌套RecyclerView,刚写完功能测试,直接卡出翔了,后来通过网上查找资料和 自己的实践,找出了两种方法解决这个问题. 首先来个最简单的方法: recyc ...
- ScrollView嵌套GridView,GridView显示不全
最近开发有个需求是以A-Z的方式区分全国城市(搜索功能),并实现字母索引的功能(有点类似微信,不过比较坑的是用的是GridView, 并且GridView上面还有几个LinearLayout). 详细 ...
- android 布局文件 ScrollView 中的 listView item 显示不全解决方案
import android.content.Context;import android.util.AttributeSet;import android.widget.ListView; /** ...
- Android解决RecyclerView中的item显示不全方案
最近的项目中实现订单确定页面.需要使用ScrollView嵌套RecyclerView,当RecyclerView中的item数量比较多时,就会出现item只显示一部分数据,并没有将用户勾选的商品数量 ...
- 一键解决ScrollView嵌套ListView仅仅显示一行的问题
/** * 解决ScrollView嵌套ListView仅仅显示一行的问题 * * @param listView */ private void setListViewHeightBasedOnCh ...
随机推荐
- 练习|Django-单表
结构目录 页面展示: 1创建Django,创建app01 在modules.py添加 class Book(models.Model): id=models.AutoField(primary_key ...
- JVM GC-----3、垃圾标记算法(二)
在上一篇文章中,介绍了在GC机制中,GC是以什么标准判定对象可以被标记的,以及最有效最常用的可达性分析法.今天介绍另外一种非常常用的标记算法,它的应用面也相当广泛.这就是:引用计数法 Referenc ...
- RelativeLayout的16种特有属性
*相对于兄弟控件的位置属性 android:layout_above="@id/center_btn"处于某一个控件的上方 android:layout_below="@ ...
- 程序员之路:python3+PyQt5+pycharm桌面GUI开发(转)
程序员之路:python3+PyQt5+pycharm桌面GUI开发 http://blog.sina.com.cn/s/blog_989218ad0102wz1k.html 先看效果: 图 1 没错 ...
- mac下配置Apache虚拟域名方案,以及遇到的坑(转)
1. 配置Apache虚拟域名 1.执行 sudo vi /etc/apache2/httpd.conf 开始配置httpd.conf 的文件; //配置listen 80端口(默认配置), ...
- hdu 1394 (线段树求逆序数)
<题目链接> 题意描述: 给你一个有0--n-1数字组成的序列,然后进行这样的操作,每次将最前面一个元素放到最后面去会得到一个序列,那么这样就形成了n个序列,那么每个序列都有一个逆序数,找 ...
- kruskal证明
Kruskal算法证明 易证,对于一个无向加权连通图,总是存在一棵或以上的有限课生成树,而这些生成树中肯定存在至少一棵最小生成树.下面证明Kruskal算法构造的生成树是这些最小生成树中的一棵. ...
- js数据结构之二叉树的详细实现方法
数据结构中,二叉树的使用频率非常高,这得益于二叉树优秀的性能. 二叉树是非线性的数据结构,用以存储带有层级的数据,其用于查找的删除的性能非常高. 二叉树 数据结构的实现方法如下: function N ...
- grant 权限 on 数据库对象 to 用户
grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant select on testdb.* to common_ ...
- .net系统的MD5加密方法
/// <summary>/// .net系统的MD5加密方法/// </summary>/// <param name="strIN">< ...