问题: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会覆盖子类控件而直接获取焦点

想必了解了这个属性之后,你就会恍然大悟啦。

  1.  
    <RelativeLayout
  2.  
    android:layout_width="match_parent"
  3.  
    android:layout_height="wrap_content"
  4.  
    android:descendantFocusability="blocksDescendants">
  5.  
    <android.support.v7.widget.RecyclerView
  6.  
    android:id="@+id/rv_me_window"
  7.  
    android:layout_width="match_parent"
  8.  
    android:layout_height="match_parent"
  9.  
    android:paddingLeft="16dp"
  10.  
    android:paddingRight="16dp"
  11.  
    android:overScrollMode="never"/>
  12.  
    </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显示不全的问题的更多相关文章

  1. 关于ScrollView嵌套RecyclerView出现item显示不全的问题

    最近使用ScrollView时,发现里面嵌套Listview显示不全,试过重写Listview的onMeasure(),并没有起作用.然后将ListView换成RecyclerView后,高度还是显示 ...

  2. 解决ScrollView嵌套RecyclerView的显示及滑动问题

        项目中时常需要实现在ScrollView中嵌入一个或多个RecyclerView.这一做法通常会导致如下几个问题 页面滑动卡顿 ScrollView高度显示不正常 RecyclerView内容 ...

  3. 解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题

    我们先看一个效果,问题说的就是中间的Grid效果在Scrollview 嵌套recyclerview显示问题,在Android Api 24是好的,不过在5,1,1版本(api 22)缺出现了问题 最 ...

  4. Android在开发中的使用技巧之解决ScrollView嵌套RecyclerView出现的系列问题

    根据已上线的app里总结出来的实用小技巧 相信大家都遇到过ScrollView嵌套RecyclerView或者RecyclerView嵌套RecyclerView来使用, 也会遇到一堆奇奇怪怪的问题, ...

  5. Android 解决ScrollView嵌套RecyclerView导致滑动不流畅的问题

    最近做的项目中遇到了ScrollView嵌套RecyclerView,刚写完功能测试,直接卡出翔了,后来通过网上查找资料和 自己的实践,找出了两种方法解决这个问题. 首先来个最简单的方法: recyc ...

  6. ScrollView嵌套GridView,GridView显示不全

    最近开发有个需求是以A-Z的方式区分全国城市(搜索功能),并实现字母索引的功能(有点类似微信,不过比较坑的是用的是GridView, 并且GridView上面还有几个LinearLayout). 详细 ...

  7. android 布局文件 ScrollView 中的 listView item 显示不全解决方案

    import android.content.Context;import android.util.AttributeSet;import android.widget.ListView; /** ...

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

    最近的项目中实现订单确定页面.需要使用ScrollView嵌套RecyclerView,当RecyclerView中的item数量比较多时,就会出现item只显示一部分数据,并没有将用户勾选的商品数量 ...

  9. 一键解决ScrollView嵌套ListView仅仅显示一行的问题

    /** * 解决ScrollView嵌套ListView仅仅显示一行的问题 * * @param listView */ private void setListViewHeightBasedOnCh ...

随机推荐

  1. Python join方法

    用相应格式的字符串将序列链接起来. a = ['wo','hao','shuai'] print("".join(a)) 'wohaoshuai' print("-&qu ...

  2. 手动部署 kubernetes 1.9 记录

    前言 目前 kubernetes 正式版本已经到1.10版本.因为前面有大佬(漠然)已经采完坑,所以自己也试着部署 kubernetes 1.9 体验下该版本的新特性.对于前面部署的 kubernet ...

  3. 072 HBase的架构以及各个模块的功能

    一:整体架构 1.体系结构 2.物理模型 3.存储体系 regionserver—>region->多个store(列簇)->一个memstore和多个storefile 4.HDF ...

  4. Spring日记_01 之 Maven项目的创建和更新

    创建Maven项目: Maven是一个第三方工具用来 下载包的,将阿里云maven中的对应包的dependency 复制到maven项目的pom.xml文件中.就可以自动下载包(比如Spring-we ...

  5. python tkinter-按钮.标签.文本框、输入框

    按钮 无功能按钮 Button的text属性显示按钮上的文本 tkinter.Button(form, text='hello button').pack() 无论怎么变幻窗体大小,永远都在窗体的最上 ...

  6. MXNet 中的 hybird_forward 的一个使用技巧

    from mxnet.gluon import nn from mxnet import nd class SliceLike(nn.HybridBlock): def __init__(self, ...

  7. 软工实践第五次作业-WordCount进阶需求

    软工实践作业(五) GitHub 作业链接 结对博客 031602240 具体分工 PSP表格 代码规范 解题思路与设计说明 爬虫使用 代码组织与内部实现设计(类图) 算法关键 实现方法 流程图 附加 ...

  8. Linux虚拟地址和物理地址的映射

    ➤背景 一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G.用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核 ...

  9. php 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别

    GET: 请求指定的页面信息,并返回实体主体.HEAD: 只请求页面的首部.POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体.PUT: 从客户端向服务器传送的数据取代指定的文档 ...

  10. 如何调整eclipse中代码字体大小

    找到windows--->preferences---->General------>Appearance---->color   and fonts   ---->ba ...