在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。 具体作用: 1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;

2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。

LayoutInflater 是一个抽象类,在文档中如下声明:

publicabstractclass LayoutInflater extends Object

获得 LayoutInflater 实例的三种方式

1.LayoutInflater inflater = getLayoutInflater();  //调用Activity的getLayoutInflater()

2.LayoutInflater localinflater =(LayoutInflater)context.getSystemService

                                                (Context.LAYOUT_INFLATER_SERVICE);

3. LayoutInflater inflater = LayoutInflater.from(context);

其实,这三种方式本质是相同的,从源码中可以看出:

getLayoutInflater():

Activity 的 getLayoutInflater() 方法是调用 PhoneWindow 的getLayoutInflater()方法,看一下该源代码:

public PhoneWindow(Context context) {          super(context);          mLayoutInflater = LayoutInflater.from(context);  }

可以看出它其实是调用 LayoutInflater.from(context)。

LayoutInflater.from(context):

publicstatic LayoutInflater from(Context context) {       LayoutInflater LayoutInflater =               (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);       if (LayoutInflater == null) {           thrownewAssertionError("LayoutInflater not found.");       }       return LayoutInflater;   }

可以看出它其实调用 context.getSystemService()。

结论:所以这三种方式最终本质是都是调用的Context.getSystemService()。

inflate 方法 通过 sdk 的 api 文档,可以知道该方法有以下几种过载形式,返回值均是 View 对象,如下:

public View inflate (int resource, ViewGroup root)  public View inflate (XmlPullParser parser, ViewGroup root)    public View inflate (XmlPullParser parser, ViewGroup root, boolean attachToRoot)    public View inflate (int resource, ViewGroup root, booleanattachToRoot)

示意代码:

LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);    View view = inflater.inflate(R.layout.custom, (ViewGroup)findViewById(R.id.test));    //EditText editText = (EditText)findViewById(R.id.content);// error  EditText editText = (EditText)view.findViewById(R.id.content);

对于上面代码,指定了第二个参数 ViewGroup root,当然你也可以设置为 null 值。

注意:

·inflate方法与 findViewById 方法不同;

·inflater 是用来找 res/layout下的 xml 布局文件,并且实例化;

·findViewById() 是找具体 xml 布局文件中的具体 widget 控件(如:Button、TextView 等)。

来源:http://blog.sina.com.cn/s/blog_48a45b950100u8ax.html

android之inflater用法相关推荐

  1. Android inflater用法

    Android inflater用法 简介 具体作用 获取layoutInflater的三种方式 源码查看 返回值结果 注意 简介 在实际的开发中layoutInflater这个类的主要的主要的作用类 ...

  2. inflater用法

    android inflater 用法 在 实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用 来找res ...

  3. android之inflater介绍

    image.png LayoutInflater(布局加载器) 开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById(). 不同点是LayoutInflate ...

  4. Android之Adapter用法总结

    本文转自http://kb.cnblogs.com/a/2328334/,转载请注明原出处. Android之Adapter用法总结 作者:Devin Zhang  来源:博客园  发布时间:2012 ...

  5. Android的Adapter用法总结

    Android之Adapter用法总结 1.Adapter概念   定义为将一个类的接口变换成客户端所期待的一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作.   在androi ...

  6. Android webservice的用法详细讲解

    Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...

  7. android room表关联,Android Room的用法

    Android Room的用法 SQLite是Android内置的轻量级关系型数据库,但直接使用SQLite core包做数据库操作有以下劣势:需要编写长且重复的代码,这会很耗时且容易出错. 管理SQ ...

  8. android图片显示组件,Android可循环显示图像的Android Gallery组件用法实例

    本文实例分析了Android可循环显示图像的Android Gallery组件用法.分享给大家供大家参考,具体如下: Gallery组件主要用于横向显示图像列表,不过按常规做法.Gallery组件只能 ...

  9. Android RxJava 基本用法

    Android RxJava 基本用法 RxJava 使用函数响应式编程方式,它可以简化项目,处理嵌套回调的异步事件. RxJava 依赖 这里以 RxJava 2.2.1 为例.在 build.gr ...

最新文章

  1. 用Eclipse进行java学习的步骤
  2. 吉林省计算机二级考试题型,吉林省 | 2018年上半年全国计算机二级考试报考简章...
  3. C语言:将数组中的第一个数与最后一个数,第二个数与倒数第二个数依次完成镜像对调
  4. RAC Debug开关修改工具
  5. Android 的开源项目的网址
  6. centos7.3上安装oracle xe 11g
  7. UG NX10.0 软件安装教程
  8. 百度网盘下载提速,推荐3种亲测有效的方法
  9. webbrowser控件使用,冬日日记每一天
  10. DFT compiler极简示例2(使用autofix)
  11. JSHOP2详细使用教程 -- 原创
  12. 谈谈 2020 年程序员收入报告
  13. 分析与思考 黄奇帆的复旦经济课 读书笔记
  14. 大侠周鸿祎——腾讯,你丫动手吧!
  15. 纪中20日c组模拟赛T1 2121. 简单游戏
  16. 【历史上的今天】9 月 15 日:华为诞生;Stack Overflow 网站公开测试;计算机协会成立
  17. C#调用Halcon并输出圆心坐标
  18. linux 修改驱动权限,Linux Kernel 'MSR' 驱动程序本地权限提升漏洞
  19. 【数论】求组合数的四种方法
  20. v-if中调用函数的问题

热门文章

  1. OpenCV LATCH Matching描述符匹配算法的实例(附完整代码)
  2. OpenCV定制和调试检测系统
  3. C++在不使用任何算术运算符的情况下将两个数字相加(附完整源码)
  4. QML基础类型之quaternion
  5. linux虚拟网桥配置nat,使用NAT在Proxmox VE 6上创建专用网桥的方法
  6. matlab实时数据传输,利用QuaRC实现c++与simulink(matlab)之间实时双向数据传输
  7. 09_ClickHouse,ReplacingMergeTree,案例,根据排序键去重,使用版本参数的去重(学习笔记)
  8. 03_TortoiseGit冲突和补丁演示,补丁冲突
  9. Python数据分析pandas之数据拼接与连接
  10. 处理数字_10_计算某列重复最多的值