关闭

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

标签: androidlayoutbuttonencodingdialogservice
157人阅读 评论(0) 收藏 举报
分类:
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。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,将得到上述效果。
 好今天就到此为止,睡觉了,大家有什么不明白的请留言~谢谢!
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25967次
    • 积分:369
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:42篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论