Android学习之LayoutInflater类

什么是LayoutInflater

LayoutInflater是一个抽象类,继承自Object,位于android.view包下,作用类似于findViewById()方法,不同的是LayoutInlfater找的是xml布局文件并且将布局文件实例化为对应的控件,而findViewById()找的是具体的widget控件。

什么时候使用LayoutInflater

当我们需要动态载入一个xml布局从而获取其中的控件时,这个时候就需要使用LayoutInflater,但是并不能直接使用,因为这是一个抽象类,我们需要通过其它方法获取LayoutInflater的实例。

在这里插入图片描述

LayoutInflater的使用

获取LayoutInflater类的实例有以下几种方式:

  1. 使用getLayoutInflater()方法,getLayoutInflater()是Activity类中的方法,直接在Activity类中调用
LayoutInflater inflater = getLayoutInflater();
  1. 使用getSystemService()方法,传入的参数是Context.LAYOUT_INFLATER_SERVICE
 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  1. 使用LayoutInflater.from()方法,这里要传入的参数是当前上下文
LayoutInflater inflater1 = LayoutInflater.from(this);

在得到LayoutInflater的实例以后,需要使用LayoutInflater的inflate()方法加载布局文件,inflate()有以下4种重载方法:
在这里插入图片描述
这4种重载方法可以分为2组,一组是通过XmlPullParser作为数据源创建去View对象,另一种是通过resource目录下的文件作为数据来源去创建View对象。

public View inflatae(int resource, ViewGroup root)

参数1为xml文件,参数2为生成的view对象的父控件,如果设置null并且提供了root,则返回root作为根布局,否则,返回填充出的view对象的根布局作为根布局。

public View inflate(int resource, ViewGroup root, boolean attachRoot)

参数1位xml文件,参数3代表是否需要从第一个参数填充成的view对象附着到第二个参数指定的控件上,如果第二个参数为null,也就是不指定父控件,那么新生产的view对象的根布局的某些参数会失效。总结一句话:如果提供了root,且第三个参数为true,则返回root作为根布局,否则,返回填充出的view对象的根布局作为根布局。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值