使用LayoutInflater的理解

前端之家收集整理的这篇文章主要介绍了使用LayoutInflater的理解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

今天封装xml布局到view的时候遇到了内容直接变成包裹内容显示与写的布局不符合的情况,检查后发现是LayoutInflater使用错误的问题,因此这里今天就记录一下LayoutInflater的部分理解。

LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;类似findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等),并且实例化。

获得 LayoutInflater 实例的三种方式

1.LayoutInflater inflater = getLayoutInflater(); //调用Activity的getLayoutInflater()

2.LayoutInflater localinflater =(LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);

3.LayoutInflater inflater = LayoutInflater.from(context);

研究源码可以看到 getLayoutInflater() 中调用了 LayoutInflater.from(context), 而LayoutInflater.from(context) 中又调用了(LayoutInflater)context.getSystemService 所以可以知道,三种调用方式本质是没有区别的。

造成我的布局问题的就是下边LayoutInflater的inflate方法
1、inflate(int resource,ViewGroup root) 2、inflate(int resource,ViewGroup root,boolean attachToRoot) 常用的这两种调用方式,root如果传递的是null引入的resource布局中设置的长宽等属性都会变成默认包裹内容(wrap_content),所以有设置布局别的属性的话在root的地方传递一个ViewGroup。

inflater.inflate(R.layout.item_list,null); —-> 显示布局变成默认包裹内容

inflater.inflate(R.layout.item_list,parent,false);—–> 正常显示布局

猜你在找的XML相关文章