在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。

具体作用:

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

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

LayoutInflater作用是将layout的xml布局文件实例化为View类对象。

获取LayoutInflater的方法有如下三种:

LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main, null);LayoutInflater inflater = LayoutInflater.from(context); (该方法实质就是第一种方法,可参考源代码)
View layout = inflater.inflate(R.layout.main, null);LayoutInflater inflater = getLayoutInflater();(在Activity中可以使用,实际上是View子类下window的一个函数)
View layout = inflater.inflate(R.layout.main, null);

注意:

·inflate方法与 findViewById 方法不同;

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

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

---------------------------------------------------------------------------

setContentView和inflate的区别

一直有点纠结setContentView和inflate的区别找了一些资料。写了个小程序看了下:

public class MyInflate extends Activity{private TextView tv;public void OnCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);//setContentView(R.layout.main);//tv = (TextView) findViewById(R.id.tv);
 LayoutInflater inflate = LayoutInflater.from(this);View view = inflate.inflate(R.layout.main,null);setContentView(view);}
}

上述注释掉的代码和没有注释掉的代码两种情况是相同的。

区别:
setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来。一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载。

public View inflate(int Resourece,ViewGroup root)
作用:填充一个新的视图层次结构从指定的XML资源文件中
reSource:View的layout的ID
root: 生成的层次结构的根视图
return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。

其余几个重载的inflate函数类似。

参考:

1.  http://www.open-open.com/lib/view/open1328837587484.html

2.  http://www.cnblogs.com/shitianzeng/articles/2323427.html

转自:http://www.cnblogs.com/loyea/archive/2013/04/27/3047248.html

Android inflate方法与 findViewById 方法区别相关推荐

  1. Android Handler中post方法与send方法的区别及使用

    目录 概述 Handler使用sendMessage方法 Handler使用post方法 post方法与send方法的区别 全部代码 效果图 后记 概述 Handler机制是Android中线程通信的 ...

  2. LayoutInflater——inflate方法不同参数的区别

    LayoutInflater有两个参数inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot),inflate(XmlPu ...

  3. android activity查询,android中activity.findViewById()方法查找的是什么?

    //代码1: package com.example.testsdk2; import android.app.Activity; import android.content.Intent; imp ...

  4. Android之ContextMenu的使用方法以及与OptionMenu的区别

    >> ContextMenu是android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有" ...

  5. Android学习:自定义ViewGroup方法总结

    毕设应用中需要添加一个滑动按钮,在网上看了几个Demo之后决定自定义ViewGroup来实现. 这里是对实现过程中自定义ViewGroup的方法总结. 关于ViewGroup,文档给出的描述是: A ...

  6. Android自定义View的实现方法,带你一步步深入了解View(四)

    不知不觉中,带你一步步深入了解View系列的文章已经写到第四篇了,回顾一下,我们一共学习了LayoutInflater的原理分析.视图的绘制流程.视图的状态及重绘等知识,算是把View中很多重要的知识 ...

  7. Android自定义View的实现方法,带你一步步深入了解View

    如果说要按类型来划分的话,自定义View的实现方式大概可以分为三种,自绘控件.组合控件.以及继承控件.那么下面我们就来依次学习一下,每种方式分别是如何自定义View的. 一.自绘控件 自绘控件的意思就 ...

  8. android自定义view的实现方法,Android自定义View的实现方法

    一些接触Android不久的朋友对自定义View都有一丝畏惧感,总感觉这是一个比较高级的技术,但其实自定义View并不复杂,有时候只需要简单几行代码就可以完成了. 如果说要按类型来划分的话,自定义Vi ...

  9. Android中bindService的使用方法

    一.android service简介 1.Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序. 2. ...

最新文章

  1. centeos7安装mariadb
  2. MYSQL数据库从A表把数据插入B表
  3. 不展现报表实现对报表的打印导出
  4. asp.net控件库FineUI使用入门图解
  5. Springboot 连接数据库
  6. 《SAP 传奇人物》系列人物故事:看透生死远没有操作0和1那么简单
  7. 软件质量包括哪些特性?软件质量保证的主要任务是什么?
  8. 大并发下Timeout waiting for connection from pool 解决方案
  9. ddr老化测试_手把手教你评估和测试固态存储【深度】
  10. 断网情况下,前端页面处理
  11. 实战:使用python爬取新冠疫情国内外最新数据
  12. 深蓝学院-视觉SLAM课程-第4讲作业(T5矩阵微分,T6手写高斯牛顿,T7批量MLE)
  13. c语言程序设计对称数,对称数 问题
  14. 【Android 你的SurfaceView休眠了吗】
  15. simulink子模块上插入图片
  16. VS.NET 2003简体中文版下载
  17. Vulnhub靶机DC系列-DC-8
  18. 最经典的黑客入门教程
  19. PyOpenGL代码实战(五):纹理
  20. DUX主题顶部彩条美化

热门文章

  1. commons-lang3之StringUtils
  2. 关于笔记本安装parrot和kali的一些问题(花屏,息屏,屏幕不能休眠)
  3. BufferedInputStream
  4. SpringAop对struts2的Action设置切面织入时报错java.lang.NoSuchMethodException
  5. 【转】Javascript面向对象编程(二):构造函数的继承
  6. tablib把数据导出为Excel、JSON、CSV等格式的Py库(写入数据并导出exl)
  7. 得到src目录下的properties文件属性
  8. SYN 攻击原理以及防范技术
  9. 发现一个很不错的正则表达式生成器
  10. step4 . day7 进程间的通信方式