`
hm4123660
  • 浏览: 282488 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
Dea4ce76-f328-3ab2-b24a-fb268e1eeb75
数据结构
浏览量:70021
社区版块
存档分类
最新评论

Android的LayoutInflater

阅读更多

在 实际开发中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);  

 

 

 

其实,这三种方式本质是相同的,从源码中可以看出:这三种方式最终本质是都是调用的Context.getSystemService()。

 

下面是一个Demo

main.xml

<?xml version="1.0"      
encoding="utf-8"?>     
<LinearLayout      
xmlns:android="http://schemas.android.com/apk/res/android"    
    android:orientation="vertical"    
    android:layout_width="fill_parent"    
    android:layout_height="fill_parent"    
    >     
<TextView       
    android:layout_width="fill_parent"      
    android:layout_height="wrap_content"      
    android:text="@string/hello"    
    />     
<Button     
    android:id="@+id/button"    
    android:layout_width="wrap_content"    
    android:layout_height="wrap_content"    
    android:text="ShowCustomDialog"    
    />     
</LinearLayout>  

 

 

定义对话框的布局方式custom_dialog.xml

 

 

<?xml version="1.0"      
encoding="utf-8"?>     
<LinearLayout      
xmlns:android="http://schemas.android.com/apk/res/android"    
              android:orientation="horizontal"    
              android:layout_width="fill_parent"    
              android:layout_height="fill_parent"    
              android:padding="10dp"    
              >     
    <ImageView android:id="@+id/image"    
               android:layout_width="wrap_content"    
               android:layout_height="fill_parent"    
               android:layout_marginRight="10dp"    
               />     
    <TextView android:id="@+id/text"    
              android:layout_width="wrap_content"    
              android:layout_height="fill_parent"    
              android:textColor="#FFF"    
              />     
</LinearLayout>    

Activity代码

 

package com.android.tutor;  
import android.app.Activity;  
import android.app.AlertDialog;  
import android.content.Context;  
import android.os.Bundle;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.ImageView;  
import android.widget.TextView;  
public class LayoutInflaterDemo extends Activity implements   
OnClickListener {  
      
 private Button button;  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        button = (Button)findViewById(R.id.button);  
        button.setOnClickListener(this);  
    }  
 @Override 
 public void onClick(View v) {  
    
  showCustomDialog();  
 }  
   
 public void showCustomDialog()  
 {  
  AlertDialog.Builder builder;  
  AlertDialog alertDialog;  
  Context mContext = LayoutInflaterDemo.this;  
    
  //下面俩种方法都可以  
  //LayoutInflater inflater = getLayoutInflater();  
  LayoutInflater inflater = (LayoutInflater)   mContext.getSystemService(LAYOUT_INFLATER_SERVICE);  
  View layout = inflater.inflate(R.layout.custom_dialog,null);  //返回值为view
  TextView text = (TextView) layout.findViewById(R.id.text);  
  text.setText("Hello, Welcome to Mr Wei's blog!");  
  ImageView image = (ImageView) layout.findViewById(R.id.image);  
  image.setImageResource(R.drawable.icon);  
  builder = new AlertDialog.Builder(mContext);  
  builder.setView(layout);  
  alertDialog = builder.create();  
  alertDialog.show();  
 }  
}   

 

运行效果:



 

  • 大小: 44.6 KB
分享到:
评论

相关推荐

    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!...

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

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

    Android LayoutInflater的用法

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

    Android LayoutInflater.Factory主题切换

    首先,我们需要理解`LayoutInflater`在Android中的角色。`LayoutInflater`是负责将XML布局文件转换为视图对象(View)的关键类。它从资源文件中读取布局描述,并根据描述创建对应的View实例。通过`LayoutInflater`,...

    Android 中级应用 一 LayoutInflater 的使用

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

    基于Android LayoutInflater的使用介绍

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

    Android LayoutInflater中 Inflate()方法应用

    在Android开发中,`LayoutInflater` 是一个至关重要的工具,它负责将XML布局文件转换成运行时的View对象。`inflate()` 方法是`LayoutInflater` 的核心方法,它的作用是解析XML布局文件,并将其转换为Android视图层次...

    Android LayoutInflater.inflate()详解及分析

    在Android开发中,`LayoutInflater` 是一个至关重要的工具,它负责将XML布局文件解析成可操作的View对象。`LayoutInflater.inflate()` 方法是其核心功能,用于将XML布局资源转化为实际的视图。本文将深入探讨`...

    Android LayoutInflater.inflate源码分析

    在Android开发中,`LayoutInflater` 是一个至关重要的类,它负责将XML布局文件转换成视图对象(View)并添加到视图层次结构中。`LayoutInflater.inflate()` 方法是我们经常使用的一个核心方法,尤其是在创建自定义...

    Android 中LayoutInflater的使用

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

    Android中使用LayoutInflater要注意的一些坑

    在Android应用开发中,LayoutInflater是不可或缺的一个工具,用于将XML布局文件转换成可操作的视图对象。在本文中,我们将深入探讨使用LayoutInflater时需要注意的一些关键点,以避免潜在的问题和陷阱。 首先,理解...

    LayoutInflater inflate 示例demo

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

    layoutinflater中嵌套layoutinflater

    在Android开发中,`LayoutInflater` 是一个至关重要的工具类,用于将XML布局文件转换为视图对象并添加到视图层次结构中。标题提到的"layoutinflater中嵌套layoutinflater"涉及到的是在一个布局中使用`LayoutInflater...

Global site tag (gtag.js) - Google Analytics