参考该博客:http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html

LayoutInflater是一个抽象类,通过调用其实例方法inflate(),将res/layout下的xml布局文件进行实例化,不同于findvirebyid()是找布局文件下的控件进行实例。

1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;

2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。
LayoutInflater是一个抽象类,通过三种方法可以获得其对象。
1. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater()

2. LayoutInflater inflater = LayoutInflater.from(context);  
3. LayoutInflater inflater =  (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);

三种方法的本质是相同的,都是调用的Context.getSystemService()。

另外getSystemService()是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。

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, boolean attachToRoot)
示意代码:

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 等)。

转载于:https://www.cnblogs.com/fajieyefu/p/5546786.html

对layoutInflater的理解相关推荐

  1. Android 中的LayoutInflater的理解

    LayoutInflater与findViewById的区别? 对于一个已经载入的界面,就可以使用findViewById()方法来获得其中的界面元素. 对于一个没有被载入或者想要动态载入的界面,就需 ...

  2. 深入理解 LayoutInflater.inflate() 方法

    目录 1. 前言 2. 正文 2.1 inflate() 方法分析 2.1.1 根节点不是 merge 时,第一组取值情况分析 2.1.2 根节点不是 merge 时,第二组取值情况分析 2.1.3 ...

  3. convertViewsetTag方法的一点理解

    转自:http://blog.163.com/freemanls@126/blog/static/164585061201171210504864/ 前言 首先我们要知道setTag方法是干什么的,S ...

  4. Android LayoutInflater原理分析,带你一步步深入了解View(一)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12921889 有段时间没写博客了,感觉都有些生疏了呢.最近繁忙的工作终于告一段落, ...

  5. Android 探究 LayoutInflater setFactory

    1.概述 对于LayoutInflater setFactory,平时我们很少用到这个API,但是这个API我觉得还是有学习的必要的,能够很多意象不到的问题,准备围绕这方面编写一系列的文章. 本篇包含 ...

  6. 深入理解WMS(一):Window的创建过程

    8.3 Window的创建过程 View是Android中的视图的呈现方式,但是View不能单独存在,它必须附着在Window这个抽象的概念上面,因此有视图的地方就有Window.Android中可以 ...

  7. LayoutInflater中四种类型inflate方法的介绍

    第一种: public View inflate (int resource, ViewGroup root) resource : View 的 layout 的 ID root :如果返回 nul ...

  8. android LayoutInflater.inflate()的参数及其用法

    很多人在网上问LayoutInflater类的用法,以及inflate()方法参数的含义,现解释如下: inflate()的作用就是将一个用xml定义的布局文件查找出来,注意与findViewById ...

  9. Android技能树 — LayoutInflater Factory小结

    前言 今天早上地铁上在洋神的公众号上看到了一篇干货,就给转过来了. 前段时间流行起来了突然不愿意写Shape,Selector文件的文章,然后各种方案,编写自定义View等.那时候大家应该都看到了一篇 ...

最新文章

  1. H5页面遮罩弹框下层还能滚动的问题
  2. linux邮件自动回复,debian上 postfix+dovecot+squirrelmail 实现 自动回复
  3. Java文件合并变得语义化
  4. svn 提交 working copy is not up-to-date
  5. 拓端tecdat|基于keras平台CNN神经网络模型的服装识别分析
  6. 486微型计算机的字长是 8位 16位 32位 64位,大学计算机基础考试试题
  7. 转发:五个方向告诉你如何运营好一个公众号!
  8. chrome浏览器收藏夹恢复
  9. Win10 使用HDMI链接显示器
  10. 基于EOS的区块链捐赠平台合约发开
  11. 斜线表头html怎么做,Excel三栏斜线表头的完美制作方法
  12. 主流配置中心的比较 Spring Cloud Config、Apollo、Nacos
  13. 【话费充值平台】话费充值平台接口设计
  14. 2022亚太杯A题思路
  15. RGB 空间颜色量化 - 减少颜色数目
  16. 新库上线 | CnOpenData·A股上市公司现场检查随机抽查数据
  17. OKR考核体系使用的分析
  18. 单点登录soo-转载
  19. 刻意练习——提高自己的技能,不断精进!
  20. 电脑重启后python导入的库不见_每次重启电脑后,桌面的文件就不见了,怎么回事啊...

热门文章

  1. vue项目配置eslint(附visio studio code配置)
  2. Mysql 开启远程连接
  3. css --- 弹性盒子
  4. Vue 父子组件间的通信
  5. 苏宁海量服务器自动化配置运维实践
  6. Excel使用控件创建动态地图图表
  7. 斑马Zebra驱动下载
  8. ASP.Net中实现中英文复合检索文本框
  9. C 语言和C++语言的 struct对比
  10. 选择什么样的时机将IT运维服务外包