RecycleView只显示一行的问题解决

项目中较少使用RecycleView,更多的使用ListView。原因无它,唯手熟而。
当使用recycleview时,遇到了新手应该常见的一个问题:只显示一行。

当前Holder的构造方法

    public BaseHolder(ViewGroup parent, @LayoutRes int res) {
        super(LayoutInflater.from(parent.getContext()).inflate(res, parent, false));
    }

解决方法:
检查布局文件,RecycleView中自定义布局的layout_height不能设置为match_parent,同时layout中任一item的高度均不能是match_parent。高度改为wrap_content,问题解决。

可能的原因:如果inflate时,传入的parent不为空,且attachToRoot为false,此时自定义布局中的属性生效;如果自定义view的高度为match_parent,导致后续view不能显示。

具体原因需要参考RecycleView的源码。可参考文章:
http://blog.csdn.net/guolin_blog/article/details/12921889 [Android LayoutInflater原理分析,带你一步步深入了解View(一)]

  1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。
  1. 如果root不为null,attachToRoot设为true,则会给加载的布局文件的指定一个父布局,即root。
  2. 如果root不为null,attachToRoot设为false,则会将布局文件最外层的所有layout属性进行设置,当该view被添加到父view当中时,这些layout属性会自动生效。
  3. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。

参考:http://blog.csdn.net/overseasandroid/article/details/51840819 RecyclerView中的item的match_parent属性失效问题解决方案。

参考:http://blog.csdn.net/fantasiasango/article/details/52188064

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,729评论 25 709
  • RecyclerView Item 布局宽高无效问题探究 前言 这个问题很早之前就碰到过,后来通过google找到...
    TinyMen阅读 3,173评论 0 0
  • 大家对LayoutInflater一定不陌生,它主要用于加载布局,在Fragment的onCreateView方法...
    凡诺依曼阅读 15,691评论 4 26
  • 拇指触屏间,思绪一闪,试以文字表下心猿,廿载白驹过隙,岁月无虚刻于脸。唯运动与阅读久伴,今拾笔不虚道道真言! ...
    张生明阅读 2,707评论 0 0
  • 手机,一种我们现代人已经根本无法离开的生活工具,看似给我们的生活带来了很多便利,但如果一些不好的使用习惯不改掉,稍...
    守旺致静阅读 5,843评论 5 30

友情链接更多精彩内容