Android中LayoutInflater的使用

转载 2015年07月07日 11:09:29

转自:http://erbo2008.iteye.com/blog/1542733

Inflater英文意思是膨胀,在Android中应该是扩展的意思吧。 
LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。

获取它的用法有3种:

方法1:

由LayoutInflater的静态函数:from(Context context) 获取:

static LayoutInflater from(Context context);

如:

 

Java代码 复制代码 收藏代码
  1. LayoutInflater inflater = LayoutInflater.from(this);
  2. View view=inflater.inflate(R.layout.ID, null);
  3. //或写成:
  4. View view=LayoutInflater.from(this).inflate(R.layout.ID, null);
Java代码  收藏代码
  1. LayoutInflater inflater = LayoutInflater.from(this);      
  2.   
  3. View view=inflater.inflate(R.layout.ID, null);       
  4.   
  5. //或写成:       
  6.   
  7. View view=LayoutInflater.from(this).inflate(R.layout.ID, null);     

方法2:

由服务获取:

 

Java代码 复制代码 收藏代码
  1. LayoutInflater inflater = (LayoutInflater)context.getSystemService
  2. (Context.LAYOUT_INFLATER_SERVICE);
Java代码  收藏代码
  1. LayoutInflater inflater = (LayoutInflater)context.getSystemService       
  2.  (Context.LAYOUT_INFLATER_SERVICE);  
  3.    

方法3:

调用Activity的getLayoutInflater() 函数获取LayoutInflater 对象。

 

setContentView和inflate区别

转:http://blog.163.com/promise_wg/blog/static/18912001420116241062211/

一般用LayoutInflater做一件事:inflate

inflate这个方法总共有四种形式(见下面),目的都是把xml表述的layout转化为View对象
其中有一个比较常用,View inflate(int resource, ViewGroup root),另三个,其实目的和这个差不多。
int resource,也就是resource/layout文件在R文件中对应的ID,这个必须指定。
而ViewGroup root则可以是null,null时就只创建一个resource对应的View,不是null时,会将创建的view自动加为root的child。

setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来
一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这需LayoutInflater动态加载
< TextView
android:id="@+id/tview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ATAAW.COM"
/>
< Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="按钮"
/>
在程序中动态加载以上布局。
LayoutInflater flater = LayoutInflater.from(this);
View view = flater.inflate(R.layout.example, null);
获取布局中的控件。
button = (Button) view.findViewById(R.id.button);//这里的view为上面获取的view对象
textView = (TextView)view.findViewById(R.id.tview);

LayoutInflater.inflate()将Layout文件转换为View,专门供Layout使用的Inflater。虽然Layout也是View的子类,但在android中如果想将xml中的Layout转换为View放入.java代码中操作,只能通过Inflater,而不能通过findViewById()。 

findViewById有两种形式 
R.layout.xx是引用res/layout/xx.xml的布局文件(inflate 方法),R.id.xx是引用布局文件里面的组件,组件的id是xx(findViewById方法)。所有的组件id都能用R.id.xx来查看,但是组件不在setContentView()里面的layout中就无法使用,Activity.findViewById()会出现空指针异常 
a. activity中的findViewById(int id) 
b. View 中的findViewById(int id) 
不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。

Android 中LayoutInflater的使用

  • 2010年11月15日 11:10
  • 32KB
  • 下载

Android------LayoutInflater作用及使用

作用:  1、对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入.  2、对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findView...

android 入门学习笔记 LayoutInflater的使用

在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而fi...
  • kof820
  • kof820
  • 2011年07月26日 14:57
  • 819

Android中LayoutInflater的使用

在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(),   不同点是LayoutInflater是用来找layout下xml布局文件,并且实例...

Android LayoutInflater.inflate的使用及源码分析

在实际开发中我们常常需要inflate要给布局然后添加到某个布局容器里面去, 要把xml布局文件转成一个View对象 需要使用LayoutInflater.inflate方法. 在开发中常常使用如下几...

android开发笔记之LayoutInflater的理解和使用

参考资料: 1.http://blog.csdn.net/chenqiumiao/article/details/7703048 Android LayoutInflater的使用 2....

Android之LayoutInflater的使用

在实际工作中,事先写好的布局文件往往不能满足我们的需求,有时会根据情况在代码中自定义控件,这就需要用到LayoutInflater。 LayoutInflater在Android中是“扩展”的意思,...
  • he90227
  • he90227
  • 2014年06月23日 14:26
  • 767

Android应用性能优化系列视图篇——LayoutInflater使用的正确姿势

LayoutInflater是Android开发者接触最多的一个类之一,主要作用是用来解析layout资源文件,将其实例化成一个View对象。LayoutInflater的API非常非常简单,对开发者...

Android LayoutInflater 使用说明及原理介绍

Android LayoutInflater 使用说明及原理介绍在看了郭大神的博客之后,打算自己总结一下,加深一下印象,如有问题欢迎指正哦!LayoutInflater 使用说明 LayoutIn...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中LayoutInflater的使用
举报原因:
原因补充:

(最多只允许输入30个字)