美文网首页
RecycleView只显示一行的问题解决

RecycleView只显示一行的问题解决

作者: zizi192 | 来源:发表于2017-07-10 17:57 被阅读0次

    项目中较少使用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

    相关文章

      网友评论

          本文标题:RecycleView只显示一行的问题解决

          本文链接:https://www.haomeiwen.com/subject/mfcrhxtx.html