`
wayfarer
  • 浏览: 297653 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

LayoutInflater

阅读更多

一般来讲,我们用LayoutInflater做一件事:inflate。inflate这个方法总共有四种形式,目的都是把xml表述的layout转化为View。This class is used to instantiate layout XML file into its corresponding View objects . It is never be used directly -- use getLayoutInflater() or getSystemService(String)getLayoutInflater() or getSystemService(String) to retrieve a standard LayoutInflater instance that is already hooked up to the current context and correctly configured for the device you are running on


1. Context.public abstract Object getSystemService (String name) Return the handle to a system-level service by name. The class of the returned object varies by the requested name. 具体参见文档。

 

2. 2种获得LayoutInflater的方法

(1)通过SystemService获得

LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

(2)从给定的context中获取

(3)二者区别:实质是一样的,请看源码

public static LayoutInflater from(Context context) {
    LayoutInflater LayoutInflater =
            (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (LayoutInflater == null) {
        throw new AssertionError("LayoutInflater not found.");
    }
    return LayoutInflater;
}
 

3. LayoutInflater.inflate()

将Layout文件转换为View,顾名思义,专门供Layout使用的Inflater。虽然Layout也是View的子类,但在android中如果想将xml中的Layout转换为View放入.java代码中操作,只能通过Inflater,而不能通过findViewById(),这一段描述有误,看如下代码 。看下面文档写的已经很清楚。

 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="fill_parent"
	android:layout_height="wrap_content">
	
	<LinearLayout android:id="@+id/placeslist_linearlayout"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical">
		
	</LinearLayout>	
</ScrollView>

 LinearLayout linearLayout = (LinearLayout) findViewById(R.id.placeslist_linearlayout);

linearLayout.addView(place_type_text);

这是可运行的,这上面的xml中,LinearLayout不再是Layout的代表,而只是一个普通的View。

 

 

 

4. findViewById有2中形式

R.layout.xx 是引用res/layout/xx.xml的布局文件(inflate方法),R.id.xx是引用布局文件里面的组件,组件的id是xx...(findViewById方法)。看看R.java配置文件吧,R对文件分类管理,多写几个layout.xml后你会发现,所有的组件id都能用R.id.xx来查看,但是组件不在setContentView()里面的layout中就无法使用,Activity.findViewById()会出现空指针异常

(1)Activity中的findViewById()

(2)View中的findViewById()

 

5.

  • 大小: 10.4 KB
  • 大小: 12.4 KB
  • 大小: 22.3 KB
  • 大小: 6.1 KB
分享到:
评论
12 楼 dcsff 2012-09-10  
受教了 
11 楼 庆_啊 2012-04-09  
真厉害。 
10 楼 ghj234 2012-03-27  
学习了,哈哈
9 楼 foreverwey 2011-09-12  
受益!
8 楼 ljh.eclipse 2011-09-03  
7 楼 ljh.eclipse 2011-09-03  
6 楼 zhuozuoying 2011-06-15  
解释的很好,受教了。谢谢...
5 楼 无愧衾影 2011-04-01  
  明白了加载layout有时会报NULL 的原因了,很好,很强大。
4 楼 fsyiyun 2011-02-21  
不错,受教了
3 楼 windloverain 2011-01-17  
不错!
2 楼 msi110 2010-10-14  
嘿嘿,不错。。。感谢了 收下啦....
1 楼 jwx0925 2010-06-05  
哥们 写的不错!收了!

相关推荐

    layoutinflater中嵌套layoutinflater

    标题提到的"layoutinflater中嵌套layoutinflater"涉及到的是在一个布局中使用`LayoutInflater`来加载另一个包含`LayoutInflater`的布局结构。这种操作通常出现在自定义复杂的可重用组件或者需要动态加载子视图的场景...

    LayoutInflater源码分析 inflate方法的区别

    在Android开发中,`LayoutInflater`是一个至关重要的工具类,它负责将XML布局文件转换为视图对象并添加到视图层次结构中。本篇文章将深入探讨`LayoutInflater`的`inflate`方法之间的区别,帮助开发者更好地理解和...

    Android 中级应用 一 LayoutInflater 的使用

    在Android开发中,`LayoutInflater`是一个至关重要的工具类,它主要负责将XML布局文件转换成View对象并添加到视图层次结构中。`LayoutInflater`的名字来源于"Layout Inflater",正如描述中提到的,它是对当前...

    LayoutInflater inflate 示例demo

    在Android开发中,`LayoutInflater` 是一个至关重要的组件,它负责将XML布局文件转换为视图对象并添加到视图层次结构中。本示例demo是专为新手设计的,旨在帮助开发者理解`inflate()`方法的不同用法及其参数的含义。...

    Android 中LayoutInflater的使用

    在Android开发中,LayoutInflater是一个非常关键的工具,它主要用于将XML布局文件转换为视图对象。这个过程称为“实例化”或“.inflate”。通过LayoutInflater,我们可以动态地在运行时加载和插入用户界面元素,这...

    Android LayoutInflater.Factory主题切换

    本篇文章将详细探讨如何通过`LayoutInflater.Factory`来实现这一功能。 首先,我们需要理解`LayoutInflater`在Android中的角色。`LayoutInflater`是负责将XML布局文件转换为视图对象(View)的关键类。它从资源文件...

    Android LayoutInflater的用法

    在Android开发中,`LayoutInflater`是一个非常重要的工具类,它主要用于将XML布局文件转换为视图对象,使得我们可以动态地将界面元素添加到应用程序中。`LayoutInflater`是Android框架的一部分,它极大地增强了UI...

    LayoutInflater.from(context).inflate()方法的调研

    在Android开发中,`LayoutInflater.from(context).inflate()`方法是一个至关重要的组件,用于将XML布局文件转换为视图对象并添加到视图层次结构中。这个方法广泛应用于动态加载和构建用户界面,尤其在处理列表视图、...

    Android LayoutInflater加载布局详解及实例代码

    Android LayoutInflater 是一个核心组件,它负责将XML布局文件转换为屏幕上的可交互视图对象。在Android应用开发中,我们通常使用LayoutInflater来动态地加载和插入布局,这在创建自定义视图、处理动态数据或者在...

    Android 中LayoutInflater(布局加载器)之实战篇Demo

    Android 中LayoutInflater(布局加载器)之实战篇 博客的Demo 博客地址: http://blog.csdn.net/l540675759/article/details/78112989 两种方式实现小红书的引导页: (1)自定义View (2)自定义LayoutInflater....

    android中LayoutInflater的使用.pdf

    在Android开发中,`LayoutInflater` 是一个至关重要的工具,它负责将XML布局文件转换为视图对象(View objects)。这个过程被称为布局的“实例化”或“膨胀”。`LayoutInflater` 提供了一种灵活的方式来动态地加载和...

    Android LayoutInflater深入分析及应用

    arser.START_TAG && type != XmlPullParser.END_DOCUMENT) { // Do nothing } if (type != XmlPullParser.START_TAG) { throw new InflateException(parser.getPositionDescription() + ": No start tag found!...

    022 _UI_布局之线性布局-动态生成与LayoutInflater

    在本视频教材"022 UI 布局之线性布局-动态生成与LayoutInflater"中,我们将深入探讨如何灵活运用线性布局以及动态生成视图,并结合LayoutInflater这一关键工具进行布局的实例化。 首先,线性布局的基本属性包括`...

    基于Android LayoutInflater的使用介绍

    在android中,LayoutInflater有点类似于Activity的findViewById(id),不同的是LayoutInflater是用来找layout下的xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。...

    AsyncTask、JSONAdapter、LayoutInflater的实例

    在Android应用开发中,AsyncTask、JSONAdapter和LayoutInflater是三个非常关键的概念,它们分别用于处理后台任务、数据解析和UI布局的动态加载。下面将详细解释这三个组件,并结合实际应用场景来帮助你理解它们的...

    Android布局加载之LayoutInflater示例详解

    Android 布局加载之 LayoutInflater 示例详解 Android 布局加载中,LayoutInflater 是一个非常重要的组件,负责将 XML 布局文件加载到 View 中。下面我们将详细介绍 LayoutInflater 的使用方法和原理。 一、...

    LayoutInflater的使用

    LayoutInflater 的使用 LayoutInflater 是 Android 中的一个重要组件,负责将 XML 布局文件实例化为 View 对象。它的作用类似于 findViewById(),不同点是 LayoutInflater 是用来找 layout 文件夹下的 xml 布局文件...

Global site tag (gtag.js) - Google Analytics