动态加载xml布局设置不起作用
最近在研究android的开发,很有意思,中间也遇到很多问题;最近就遇到一个需求,需要在视图中动态的加载
一个xml布局,实现代码很简单,使用inflate方法即可,但加载后发现xml布局里的设置都没生效,完全不是我们希
望的效果,主要是layout_width和layout_height,明明设置的是match_parent(占满),可显示效果确很像
wrap_content(根据内容计算)的样子,很是郁闷了好久,后来通过百度找到了问题所在(百度无所不能啊,呵呵)
,是inflate方法的参数传递问题。
错误的方法:
LayoutInflater.from(this.getContext()).inflate(R.layout.widget_pull_down_refresh_header, null, true);
正确的方法:
LayoutInflater.from(this.getContext()).inflate(R.layout.widget_pull_down_refresh_header, this, false);
大家看到了,关键的就是第2个参数的传递,看了解释说第2个参数用来指定xml布局的父容器,如果为null的话,说明
没有父容器,自己就是顶层元素,因此match_parent的计算就没有参照物,只能根据内容来计算;如果传递一个指定view
的话,就会用指定view的大小作为参照物来计算,也就能实现我们希望的效果。
边学边记,很多地方理解的不到位,如有错误,还望指正!