Android 中LayoutInflater的使用【转】

转自:http://weizhulin.blog.51cto.com/1556324/311450

大家好我们这一节讲的是LayoutInflater的使用,在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(),

不同点是LayoutInflater是用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。

为了让大家容易理解我做了一个简单的Demo,主布局main.xml里有一个TextView和一个Button,当点击Button,出现 Dialog,而这个Dialog的布局方式是我们在layout目录下定义的custom_dialog.xml文件(里面左右分布,左边 ImageView,右边TextView)。

效果图如下:

 

下面我将详细的说明Demo的实现过程:

1、新建一个 Android工程,我们命名为LayoutInflaterDemo.

2、修改main.xml布局,里面主要在原来基础上增加了一个Button.代码如下:

 1 <?xml version="1.0"      
 2 encoding="utf-8"?>     
 3 <LinearLayout      
 4 xmlns:android="http://schemas.android.com/apk/res/android"    
 5     android:orientation="vertical"    
 6     android:layout_width="fill_parent"    
 7     android:layout_height="fill_parent"    
 8     >     
 9 <TextView       
10     android:layout_width="fill_parent"      
11     android:layout_height="wrap_content"      
12     android:text="@string/hello"    
13     />     
14 <Button     
15     android:id="@+id/button"    
16     android:layout_width="wrap_content"    
17     android:layout_height="wrap_content"    
18     android:text="ShowCustomDialog"    
19     />     
20 </LinearLayout>    

3.定义对话框的布局方式,我们在layout目录下,新建一个名为 custom_dialog.xml文件具体代码如下:

 1 <?xml version="1.0"      
 2 encoding="utf-8"?>     
 3 <LinearLayout      
 4 xmlns:android="http://schemas.android.com/apk/res/android"    
 5               android:orientation="horizontal"    
 6               android:layout_width="fill_parent"    
 7               android:layout_height="fill_parent"    
 8               android:padding="10dp"    
 9               >     
10     <ImageView android:id="@+id/image"    
11                android:layout_width="wrap_content"    
12                android:layout_height="fill_parent"    
13                android:layout_marginRight="10dp"    
14                />     
15     <TextView android:id="@+id/text"    
16               android:layout_width="wrap_content"    
17               android:layout_height="fill_parent"    
18               android:textColor="#FFF"    
19               />     
20 </LinearLayout>    

4.修改主程序LayouInflaterDemo.java代码如下:

 1 package com.android.tutor;     
 2 import android.app.Activity;     
 3 import android.app.AlertDialog;     
 4 import android.content.Context;     
 5 import android.os.Bundle;     
 6 import android.view.LayoutInflater;     
 7 import android.view.View;     
 8 import android.view.View.OnClickListener;     
 9 import android.widget.Button;     
10 import android.widget.ImageView;     
11 import android.widget.TextView;     
12 public class LayoutInflaterDemo extends Activity implements      
13 OnClickListener {     
14          
15     private Button button;     
16     public void onCreate(Bundle savedInstanceState) {     
17         super.onCreate(savedInstanceState);     
18         setContentView(R.layout.main);     
19              
20         button = (Button)findViewById(R.id.button);     
21         button.setOnClickListener(this);     
22     }     
23     @Override    
24     public void onClick(View v) {     
25              
26         showCustomDialog();     
27     }     
28          
29     public void showCustomDialog()     
30     {     
31         AlertDialog.Builder builder;     
32         AlertDialog alertDialog;     
33         Context mContext = LayoutInflaterDemo.this;     
34              
35         //下面俩种方法都可以     
36         ////LayoutInflater inflater = getLayoutInflater();     
37         LayoutInflater inflater = (LayoutInflater)      
38 mContext.getSystemService(LAYOUT_INFLATER_SERVICE);     
39         View layout = inflater.inflate(R.layout.custom_dialog,null);     
40         TextView text = (TextView) layout.findViewById(R.id.text);     
41         text.setText("Hello, Welcome to Mr Wei's blog!");     
42         ImageView image = (ImageView) layout.findViewById(R.id.image);     
43         image.setImageResource(R.drawable.icon);     
44         builder = new AlertDialog.Builder(mContext);     
45         builder.setView(layout);     
46         alertDialog = builder.create();     
47         alertDialog.show();     
48     }     
49 }    

5、最后执行之,点击Button,将得到上述效果。

 好今天就到此为止,睡觉了,大家有什么不明白的请留言~谢谢!

posted on 2013-05-07 19:39  林盛  阅读(138)  评论(0)    收藏  举报