当前位置: 代码迷 >> 综合 >> inflate()方法详解和源码分析
  详细解决方案

inflate()方法详解和源码分析

热度:0   发布时间:2023-12-21 18:56:37.0
在开发中,我们经常需要使用到LayoutInflater,通过该对象的inflate()方法,将一个layout布局文件实例化为View对象。

关于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:需要实例化的布局