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.