在开发中,我们经常需要使用到LayoutInflater,通过该对象的inflate()方法,将一个layout布局文件实例化为View对象。
关于LayoutInflater对象的获取,参考博文:
http://blog.csdn.net/ruancoder/article/details/51760942
今天主要对inflate()方法的使用和源码进行分析。
(1).inflate()方法的使用
方法一:
方法二:
其中方法一最为常见。
常见使用案例一:
常见使用案例二:
那么方法一与方法二有什么区别呢?
进入方法一的源码,我们会发现内部调用的其实就是方法二,只是将方法二的第3个参数设为“root != null”。
方法二中的参数和返回值释义:
参数:
resource:需要实例化的布局
关于LayoutInflater对象的获取,参考博文:
http://blog.csdn.net/ruancoder/article/details/51760942
今天主要对inflate()方法的使用和源码进行分析。
(1).inflate()方法的使用
在实际使用中,我们一般会用到inflate的以下两个重载方法。
方法一:
public View inflate(int resource, ViewGroup root) {}
方法二:
public View inflate(int resource, ViewGroup root, boolean attachToRoot) {}
其中方法一最为常见。
常见使用案例一:
View myView = LayoutInflater.from(context).inflate(R.layout.my_view, null);
将布局文件/res/layout/my_view.xml实例化为myView对象。
常见使用案例二:
ViewGroup viewRoot;
LayoutInflater.from(context).inflate(R.layout.my_view, viewRoot);
将布局文件/res/layout/my_view.xml实例化的View对象添加到viewRoot布局中。
那么方法一与方法二有什么区别呢?
进入方法一的源码,我们会发现内部调用的其实就是方法二,只是将方法二的第3个参数设为“root != null”。
public View inflate(int resource, ViewGroup root) {return inflate(resource, root, root != null);
}
方法二中的参数和返回值释义:
参数:
resource:需要实例化的布局