• RecyclerView android:layout_width="match_parent" 无效


    使用RecyclerView 时,在xml文件中设置宽度match_parent无效。

    1 View view = mInflater.from(mContext).inflate(R.layout.item_recycler_view, parent, false);

    对于:inflate

    1 public View inflate(int resource, ViewGroup root, boolean attachToRoot) {  
    2     if (DEBUG) System.out.println("INFLATING from resource: " + resource);  
    3     XmlResourceParser parser = getContext().getResources().getLayout(resource);  
    4     try {  
    5         return inflate(parser, root, attachToRoot);  
    6     } finally {  
    7         parser.close();  
    8     }  
    9 } 

    即调用了:

    public View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot) 

    其方法对于理解后两个参数作用的代码:

     1 ViewGroup.LayoutParams params = null;  
     2   
     3 if (root != null) {  
     4     if (DEBUG) {  
     5         System.out.println("Creating params from root: " +  
     6                 root);  
     7     }  
     8     // Create layout params that match root, if supplied  
     9     params = root.generateLayoutParams(attrs);  
    10     if (!attachToRoot) {  
    11         // Set the layout params for temp if we are not  
    12         // attaching. (If we are, we use addView, below)  
    13         temp.setLayoutParams(params);  
    14     }  
    15 }  

    调用其方法:

    1、传入了ViewGroup root参数,则会从root中得到由layout_width和layout_height组成的LayoutParams

    2、如果attachToRoot设置为false的话,就会对我们加载的视图View设置该LayoutParams。

    所以RecyclerView 如果采用平常方式去inflate,宽度不会显示全,设置layout_width="match_parent" 无效。

  • 相关阅读:
    linux 终端分屏命令vsp(转)
    ACE消息队列(转)
    iovec结构体定义及使用 (转)
    转: 写给想成为前端工程师的同学们 (from 360前端团队)
    转:苹果企业级开发者账号申请流程
    奇舞团的博客(360前端团队)
    腾讯开源组件
    转:android studio入门合集
    Raid分类说明 (from mongodb权威指南)
    转: linux下的自动对时
  • 原文地址:https://www.cnblogs.com/CharlesGrant/p/5170852.html
Copyright © 2020-2023  润新知