本文主要是介绍LayoutInflater方法Inflate三种重载的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LayoutInflater方法Inflate三种重载的区别
今天学习了hongyang的博文Android LayoutInflater深度解析 给你带来全新的认识,对LayoutInflater三个重载方法inflate的认识又加深了一步,在此摘要其博文要点:
Inflate(resId , null ) 只创建temp ,返回temp
Inflate(resId , parent, false )创建temp,然后执行temp.setLayoutParams(params);返回temp
Inflate(resId , parent, true ) 创建temp,然后执行root.addView(temp, params);最后返回root
由上面已经能够解释:
Inflate(resId , null )不能正确处理宽和高是因为:layout_width,layout_height是相对了父级设置的,必须与父级的LayoutParams一致。而此temp的getLayoutParams为null
Inflate(resId , parent,false ) 可以正确处理,因为temp.setLayoutParams(params);这个params正是root.generateLayoutParams(attrs);得到的。
Inflate(resId , parent,true )不仅能够正确的处理,而且已经把resId这个view加入到了parent,并且返回的是parent
这篇关于LayoutInflater方法Inflate三种重载的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!