inflate 参数 的解释
作者:互联网
root,和attachToRoot 2个参数有4种组合,但是有一组合无意义。
感觉这个函数写的太废了。非常明显 boolean attachToRoot,这个参数 放在前面,root在后面更好理解一点。
是否要附加根节点上,之后在看跟节点是否为空。难道是英文的语法导致??i go first!
attachToRoot |
root | |
true | null | 无意义 |
true | not null | xml 再套一个viewgroup。 这样最后,应该就2个相同的viewgroup了吧。 用在特殊情况下 |
false | null | 直接返回xml。 这种情况下 xml内的根点的宽高属性,就会变成默认的warp_context值。一般不用 |
false | not null | 只需要xml 的外层的父group布局类型,一般使用这种。设计的时候一般是这种思路,xml和外层是同一个布局类型。这样好衔接。 |
干脆自己封下。省的去记毫无用处的知识点。这些设置类的知识点。变化太大。记住没有任何用作。
//activity helper public static class LS_Activity { public static View inflast_Normal(Context context,int rid,ViewGroup viewGroup) { return LayoutInflater.from(context).inflate(rid, viewGroup,false); } public static View inflast_WrapFather(Context context,int rid,ViewGroup viewGroup) { return LayoutInflater.from(context).inflate(rid, viewGroup,true); } public static View inflast_ClearArrer(Context context,int rid) { return LayoutInflater.from(context).inflate(rid, null,false); } }
源代码减缩。
public View inflate(XmlPullParser parser, @Nullable ViewGroup root, boolean attachToRoot) { final Context inflaterContext = mContext; Context lastContext = (Context) mConstructorArgs[0]; mConstructorArgs[0] = inflaterContext; final AttributeSet attrs = Xml.asAttributeSet(parser); View result = root; int type=getXmlPullParser.START_TAG;// Look for the root node. final String name = parser.getName(); if (TAG_MERGE.equals(name) && root != null && attachToRoot==true) //如果xml的根节点是merge. { rInflate(parser, root, inflaterContext, attrs, false); } else { final View temp = createViewFromTag(root, name, inflaterContext, attrs); ViewGroup.LayoutParams params = null; if (root != null && attachToRoot==false)//用xml的作为根节点,并且附加参数。 { params = root.generateLayoutParams(attrs); temp.setLayoutParams(params); rInflateChildren(parser, temp, attrs, true); } else if(root != null && attachToRoot==true)//用xml上层作为根节点,并且使用上层的布局类型。 { root.addView(temp, params); } else if(root == null || attachToRoot==false)//用xml的作为根节点 { result = temp; } } return result; }
标签:xml,解释,false,attachToRoot,参数,context,inflate,null,root 来源: https://www.cnblogs.com/lsfv/p/11113411.html