-
LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
实现LayoutInflater的实例化共有3种方法,
(1).通过SystemService获得
LayoutInflaterinflater = (LayoutInflater)context.getSystemServices(Context.LAYOUT_INFLATER_SERVICES);
Viewview = inflater.inflate(R.layout.main, null);
(2).从给定的context中获得
LayoutInflaterinflater = LayoutInflater.from(context);
Viewview = inflater.inflate(R.layout.mian, null);
(3).
LayoutInflaterinflater =getLayoutInflater();(在Activity中可以使用,实际上是View子类下window的一个函数)
Viewlayout = inflater.inflate(R.layout.main, null);
其实,这三种方式本质是相同的,从源码中可以看出:getLayoutInflater():
Activity的getLayoutInflater()方法是调用PhoneWindow的getLayoutInflater()方法,看一下该源代码:
publicPhoneWindow(Contextcontext) {
super(context);
mLayoutInflater= LayoutInflater.from(context);
}
可以看出它其实是调用LayoutInflater.from(context)。
LayoutInflater.from(context):
public static LayoutInflaterfrom(Context context) {
LayoutInflaterLayoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(LayoutInflater== null){
thrownew AssertionError("LayoutInflaternot found.");
}
returnLayoutInflater;
}
可以看出它其实调用context.getSystemService()。
public View inflate(int Resourece,ViewGrouproot)
作用:填充一个新的视图层次结构从指定的XML资源文件中
reSource:View的layout的ID
root: 生成的层次结构的根视图
return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。其余几个重载的inflate函数类似。
摘自 维王妖妖
相关文章
- 好的提高代码质量的方法有哪些?有什么经验和技巧?
- 指针的用法和注意事项(三)
- pytest学习和使用23-通俗易懂的聊聊allure常用特性集合及使用方法说明
- PyTorch 之 简介、相关软件框架、基本使用方法、tensor 的几种形状和 autograd 机制
- Vue.js的基本概念和用法
- Object类中equals,hashCode和toString方法的学习
- Java中Object类的equals()和hashCode()方法深入解析
- cmd命令行执行java程序的编译和执行的方法及可能出现找不到或无法加载主类的错误的解决
- 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第2节 抽象类_16-抽象方法和抽象类的使用
- 对于Java静态成员变量和非静态成员变量的一些学习方法