Android高手进阶教程(五)之----Android 中LayoutInflater的使用! (转)

转载 2011年01月25日 10:05:00
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。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. view plaincopy to clipboardprint?  
  2. <? xml   version = "1.0"       
  3. encoding = "utf-8" ?>      
  4. < LinearLayout       
  5. xmlns:android = "http://schemas.android.com/apk/res/android"     
  6.      android:orientation = "vertical"     
  7.      android:layout_width = "fill_parent"     
  8.      android:layout_height = "fill_parent"     
  9.      >      
  10. < TextView        
  11.      android:layout_width = "fill_parent"       
  12.      android:layout_height = "wrap_content"       
  13.      android:text = "@string/hello"     
  14.      />      
  15. < Button      
  16.      android:id = "@+id/button"     
  17.      android:layout_width = "wrap_content"     
  18.      android:layout_height = "wrap_content"     
  19.      android:text = "ShowCustomDialog"     
  20.      />      
  21. </ LinearLayout >     
  22. <? xml   version = "1.0"    
  23. encoding = "utf-8" ?>  
  24. < LinearLayout    
  25. xmlns:android = "http://schemas.android.com/apk/res/android"  
  26.      android:orientation = "vertical"  
  27.      android:layout_width = "fill_parent"  
  28.      android:layout_height = "fill_parent"  
  29.      >  
  30. < TextView     
  31.      android:layout_width = "fill_parent"    
  32.      android:layout_height = "wrap_content"    
  33.      android:text = "@string/hello"  
  34.      />  
  35. < Button  
  36.   android:id = "@+id/button"  
  37.   android:layout_width = "wrap_content"  
  38.   android:layout_height = "wrap_content"  
  39.   android:text = "ShowCustomDialog"  
  40.   />  
  41. </ LinearLayout >  
 
3.定义对话框的布局方式,我们在layout目录下,新建一个名为 custom_dialog.xml文件具体代码如下:
  1. view plaincopy to clipboardprint?  
  2. <? xml   version = "1.0"       
  3. encoding = "utf-8" ?>      
  4. < LinearLayout       
  5. xmlns:android = "http://schemas.android.com/apk/res/android"     
  6.                android:orientation = "horizontal"     
  7.                android:layout_width = "fill_parent"     
  8.                android:layout_height = "fill_parent"     
  9.                android:padding = "10dp"     
  10.                >      
  11.      < ImageView   android:id = "@+id/image"     
  12.                 android:layout_width = "wrap_content"     
  13.                 android:layout_height = "fill_parent"     
  14.                 android:layout_marginRight = "10dp"     
  15.                 />      
  16.      < TextView   android:id = "@+id/text"     
  17.                android:layout_width = "wrap_content"     
  18.                android:layout_height = "fill_parent"     
  19.                android:textColor = "#FFF"     
  20.                />      
  21. </ LinearLayout >     
  22. <? xml   version = "1.0"    
  23. encoding = "utf-8" ?>  
  24. < LinearLayout    
  25. xmlns:android = "http://schemas.android.com/apk/res/android"  
  26.                android:orientation = "horizontal"  
  27.                android:layout_width = "fill_parent"  
  28.                android:layout_height = "fill_parent"  
  29.                android:padding = "10dp"  
  30.                >  
  31.      < ImageView   android:id = "@+id/image"  
  32.                 android:layout_width = "wrap_content"  
  33.                 android:layout_height = "fill_parent"  
  34.                 android:layout_marginRight = "10dp"  
  35.                 />  
  36.      < TextView   android:id = "@+id/text"  
  37.                android:layout_width = "wrap_content"  
  38.                android:layout_height = "fill_parent"  
  39.                android:textColor = "#FFF"  
  40.                />  
  41. </ LinearLayout >  
 
4.修改主程序LayouInflaterDemo.java代码如下:
 
  1. view plaincopy to clipboardprint?  
  2. package  com.android.tutor;     
  3. import  android.app.Activity;     
  4. import  android.app.AlertDialog;     
  5. import  android.content.Context;     
  6. import  android.os.Bundle;     
  7. import  android.view.LayoutInflater;     
  8. import  android.view.View;     
  9. import  android.view.View.OnClickListener;     
  10. import  android.widget.Button;     
  11. import  android.widget.ImageView;     
  12. import  android.widget.TextView;     
  13. public   class  LayoutInflaterDemo  extends  Activity  implements       
  14. OnClickListener {     
  15.          
  16.      private  Button button;     
  17.      public   void  onCreate(Bundle savedInstanceState) {     
  18.          super .onCreate(savedInstanceState);     
  19.         setContentView(R.layout.main);     
  20.              
  21.         button = (Button)findViewById(R.id.button);     
  22.         button.setOnClickListener( this );     
  23.     }     
  24.      @Override     
  25.      public   void  onClick(View v) {     
  26.              
  27.         showCustomDialog();     
  28.     }     
  29.          
  30.      public   void  showCustomDialog()     
  31.     {     
  32.         AlertDialog.Builder builder;     
  33.         AlertDialog alertDialog;     
  34.         Context mContext = LayoutInflaterDemo. this ;     
  35.              
  36.          //下面俩种方法都可以     
  37.          ////LayoutInflater inflater = getLayoutInflater();     
  38.         LayoutInflater inflater = (LayoutInflater)      
  39. mContext.getSystemService(LAYOUT_INFLATER_SERVICE);     
  40.         View layout = inflater.inflate(R.layout.custom_dialog, null );     
  41.         TextView text = (TextView) layout.findViewById(R.id.text);     
  42.         text.setText( "Hello, Welcome to Mr Wei's blog!" );     
  43.         ImageView image = (ImageView) layout.findViewById(R.id.image);     
  44.         image.setImageResource(R.drawable.icon);     
  45.         builder =  new  AlertDialog.Builder(mContext);     
  46.         builder.setView(layout);     
  47.         alertDialog = builder.create();     
  48.         alertDialog.show();     
  49.     }     
  50. }    
  51. package  com.android.tutor;  
  52. import  android.app.Activity;  
  53. import  android.app.AlertDialog;  
  54. import  android.content.Context;  
  55. import  android.os.Bundle;  
  56. import  android.view.LayoutInflater;  
  57. import  android.view.View;  
  58. import  android.view.View.OnClickListener;  
  59. import  android.widget.Button;  
  60. import  android.widget.ImageView;  
  61. import  android.widget.TextView;  
  62. public   class  LayoutInflaterDemo  extends  Activity  implements    
  63. OnClickListener {  
  64.       
  65.   private  Button button;  
  66.      public   void  onCreate(Bundle savedInstanceState) {  
  67.          super .onCreate(savedInstanceState);  
  68.         setContentView(R.layout.main);  
  69.           
  70.         button = (Button)findViewById(R.id.button);  
  71.         button.setOnClickListener( this );  
  72.     }  
  73.   @Override  
  74.   public   void  onClick(View v) {  
  75.     
  76.   showCustomDialog();  
  77.  }  
  78.    
  79.   public   void  showCustomDialog()  
  80.  {  
  81.   AlertDialog.Builder builder;  
  82.   AlertDialog alertDialog;  
  83.   Context mContext = LayoutInflaterDemo. this ;  
  84.     
  85.    //下面俩种方法都可以  
  86.    ////LayoutInflater inflater = getLayoutInflater();  
  87.   LayoutInflater inflater = (LayoutInflater)   
  88. mContext.getSystemService(LAYOUT_INFLATER_SERVICE);  
  89.   View layout = inflater.inflate(R.layout.custom_dialog, null );  
  90.   TextView text = (TextView) layout.findViewById(R.id.text);  
  91.   text.setText( "Hello, Welcome to Mr Wei's blog!" );  
  92.   ImageView image = (ImageView) layout.findViewById(R.id.image);  
  93.   image.setImageResource(R.drawable.icon);  
  94.   builder =  new  AlertDialog.Builder(mContext);  
  95.   builder.setView(layout);  
  96.   alertDialog = builder.create();  
  97.   alertDialog.show();  
  98.  }  
  99. }   
5、最后执行之,点击Button,将得到上述效果。
 好今天就到此为止,睡觉了,大家有什么不明白的请留言~谢谢!

Android高手进阶教程(五)之----Android 中LayoutInflater的使用!

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://weizhulin.blog.51cto.com/1556324/311450...
  • jelly10241
  • jelly10241
  • 2013年07月04日 16:42
  • 247

Android高手进阶教程(五)之----Android 中LayoutInflater的使用!

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://weizhulin.blog.51cto.com/1556324/311450 ...
  • chen825919148
  • chen825919148
  • 2013年04月23日 21:30
  • 434

Android高手进阶教程(五)之----Android 中LayoutInflater的使用!

Android高手进阶教程(五)之----Android 中LayoutInflater的使用! 2010-04-21 21:11:25 标签:Android android开发 andr...
  • pi9nc
  • pi9nc
  • 2013年06月26日 20:32
  • 489

Android高手进阶教程(五)之----Android 中LayoutInflater的使用!

大家好我们这一节讲的是LayoutInflater的使用,在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于 findViewById(), 不同点是LayoutInfla...
  • A09211008
  • A09211008
  • 2013年11月14日 11:25
  • 740

Android高手进阶教程(五)之----Android 中LayoutInflater的使用!

转自:http://weizhulin.blog.51cto.com/1556324/311450 大家好我们这一节讲的是LayoutInflater的使用,在实际开发种LayoutInfl...
  • JimFire
  • JimFire
  • 2013年05月08日 19:18
  • 562

Android开发高手进阶--学习任务

通过实践和摸索,整理了安卓学习和提升的进阶任务,分设4关。 一、实践关: fragement的学习和应用新组件viewpage等学习自定义view 的实现与应用listview下拉刷新属性动画的...
  • wellsoho
  • wellsoho
  • 2016年04月05日 12:05
  • 1559

85篇技术好文助你Android进阶

从去年11月份开始,我开始写个人博客,到现在恰好一年时间了,这一年中,通过周末和空闲时间陆续原创了40余篇技术博客。博客源于自己的一些项目经验总结和对新技术的学习总结。通过博客的总结和沉淀,在自己成长...
  • u012426327
  • u012426327
  • 2017年11月29日 14:43
  • 164

android LayoutInflater加载的布局大小不受控制

在使用LayoutInflater 加载布局时,经常会碰到这样的情况,明明在布局里设置了布局的大小,为什么就是不起作用,但是同样的布局 在setContentView() 中就可以起作用呢!在查看底层...
  • hushaoxi
  • hushaoxi
  • 2016年08月16日 17:09
  • 944

学习Android遇到的问题——LayoutInflater

前言对于像我这样的android初学者来说,LayoutInflater是个很模糊的概念,I can’t feel it!我只知道在自定义控件的时候构造函数中会用到LayoutInflater.fro...
  • small_bo
  • small_bo
  • 2015年11月24日 18:12
  • 413

Android开发——深入理解LayoutInflater

LayoutInflater类可以从XML文件中实例化View对象,其中涉及到XML解析,使用的是PULL解析;从标签实例化View,使用的是反射。 如何获取LayoutInflater?为了获取L...
  • qq_19431333
  • qq_19431333
  • 2016年11月01日 10:28
  • 913
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android高手进阶教程(五)之----Android 中LayoutInflater的使用! (转)
举报原因:
原因补充:

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