inflate 参数 的解释
Posted lsfv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
以上是关于inflate 参数 的解释的主要内容,如果未能解决你的问题,请参考以下文章
Android layoutInflate.inflate 方法具体解释,removeView()错误解决
LayoutInflater类的inflate方法中的第二个参数怎么用,Android
LayoutInflater.inflate()方法的ViewGroup参数问题