android LayoutInflater.inflate()的参数理解

LayoutInflater.inflate()的作用就是将一个xml定义的布局文件实例化为view控件对象(也是一个布局文件);

LayoutInflater.inflate是加载一个布局文件;

 findViewById则是从布局文件中查找一个控件;


一.获取LayoutInflater对象有三种方法

LayoutInflater inflater=LayoutInflater.from(context);

LayoutInflater inflater=getLayoutInflater();


LayoutInflater inflater=(LayoutInflater)context.getSystemService(LAYOUT_INFLATER_SERVICE);


二:inflate 参数

public View inflate(int resource, ViewGroup root, boolean attachToRoot) :


reSource:View的layout的ID  
root: 首先我们会根据resource 产生一个view ,然后如果root =null  这时候我们获得的view 就是 resource 产生的view  并且把view  当作最终的返回值返回了 因为他没有父布局 所以  view布局中的根视图的layout_XX(给父布局用的)属性都不会生效,然后设置成默认的包裹内容方式

解决方法:我们还可以设置item布局的根视图为包裹内容,然后设置内部控件的高度等属性(来控制item的大小),这样就不会修改显示方式了

   当我们传进来的root不是null,并且第三个参数是false的时候,这个布局文件产生的view就被加入到了root中,并且把root当作最终的返回值返回了     这时候view  布局中的根视图的layout_XX(给父布局用的)属性生效   

  个人感觉 root!=null 和 attachToRoot =false   和root =null   只是item的根布局参数是否生效的差别


attachToRoot:告知布局生成器是否将生成的视图添加给父视图  一般为false.

扫描二维码关注公众号,回复: 6064214 查看本文章



猜你喜欢

转载自blog.csdn.net/rfgreeee/article/details/79280981
今日推荐