文档章节

android中LayoutInflater的使用

We911
 We911
发布于 2017/02/08 10:14
字数 532
阅读 9
收藏 0

android中LayoutInflater的使用   

 Inflater英文意思是膨胀,在Android中应该是扩展的意思吧。 
LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。

   (0)她可以有很多地方可以使用,如BaseAdapter的getView中,自定义Dialog中取得view中的组件widget等等。
它的用法有2种:

复制到剪贴板  Java代码
  1. view plaincopy to clipboardprint?  
  2. LayoutInflater inflater = LayoutInflater.from(this);     
  3. View view=inflater.inflate(R.layout.ID, null);    
  4. 或者干脆并成一句:    
  5. View view=LayoutInflater.from(this).inflate(R.layout.ID, null);    


另一种方法: 
复制到剪贴板  Java代码
  1. view plaincopy to clipboardprint?  
  2. LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);    
  3. View view=inflater.inflate(R.layout.ID, null);    


上面2种方法本质上是一样的,看下面的源码,form()调用的就是getSystemService(): 
复制到剪贴板  Java代码
  1. Java代码  
  2. public static LayoutInflater from(Context context) {       
  3.     LayoutInflater LayoutInflater =       
  4.             (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);       
  5.     if (LayoutInflater == null) {       
  6.         throw new AssertionError("LayoutInflater not found.");       
  7.     }       
  8.     return LayoutInflater;       
  9. }     



另外getSystemService()是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。 

传入的Name 返回的对象 说明
WINDOW_SERVICE WindowManager 管理打开的窗口程序
LAYOUT_INFLATER_SERVICE LayoutInflater 取得xml里定义的view
ACTIVITY_SERVICE ActivityManager 管理应用程序的系统状态
POWER_SERVICE PowerManger 电源的服务
ALARM_SERVICE AlarmManager 闹钟的服务
NOTIFICATION_SERVICE NotificationManager 状态栏的服务
KEYGUARD_SERVICE KeyguardManager 键盘锁的服务
LOCATION_SERVICE LocationManager 位置的服务,如GPS
SEARCH_SERVICE SearchManager 搜索的服务
VEBRATOR_SERVICE Vebrator 手机震动的服务
CONNECTIVITY_SERVICE Connectivity 网络连接的服务
WIFI_SERVICE WifiManager Wi-Fi服务
TELEPHONY_SERVICE TeleponyManager 电话服务


复制到剪贴板  Java代码
  1. Java代码  
  2. //基本用法    
  3. public void showCustomDialog(){    
  4.   AlertDialog.Builder builder;    
  5.   AlertDialog alertDialog;    
  6.   Context mContext = AppActivity.this;    
  7. //下面俩种方法都可以    
  8.   //LayoutInflater inflater = getLayoutInflater();    
  9.   LayoutInflater inflater = (LayoutInflater)     
  10. mContext.getSystemService(LAYOUT_INFLATER_SERVICE);    
  11.   View layout = inflater.inflate(R.layout.custom_dialog,null);    
  12.   TextView text = (TextView) layout.findViewById(R.id.text);    
  13.   text.setText("Hello, Welcome to Mr Wei's blog!");    
  14.   ImageView image = (ImageView) layout.findViewById(R.id.image);    
  15.   image.setImageResource(R.drawable.icon);    
  16.   builder = new AlertDialog.Builder(mContext);    
  17.   builder.setView(layout);    
  18.   alertDialog = builder.create();    
  19.   alertDialog.show();    
  20.  }    
  21. }    
  22.     
  23. protected void showToast(int type) {      
  24.         Toast.makeText(this"*********", Toast.LENGTH_LONG).show();      
  25.       
  26.         LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);      
  27.         View view = li.inflate(R.layout.toast, null);      
  28.               
  29.         Toast toast = new Toast(this);      
  30.         toast.setView(view);      
  31.         toast.setDuration(type);      
  32.         toast.show();      
  33.     }      


本文转载自:http://blog.csdn.net/liduanw/article/details/8223643

共有 人打赏支持
We911
粉丝 1
博文 63
码字总数 0
作品 0
深圳
程序员
Android LayoutInflater的使用

Inflater英文意思是膨胀,在Android中应该是扩展的意思吧。 LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 find...

子曰疯
2013/09/03
0
2
LayoutInflater详解

 分析时候遇到的,记录一个 作用: 1、对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入. 2、对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findViewByI...

骑牛找牛
2014/01/30
0
0
[Android] LayoutInflater原理分析,带你一步步深入了解View(一)

有段时间没写博客了,感觉都有些生疏了呢。最近繁忙的工作终于告一段落,又有时间写文章了,接下来还会继续坚持每一周篇的节奏。 有不少朋友跟我反应,都希望我可以写一篇关于View的文章,讲...

枫兮兮
2014/03/26
0
0
Android LayoutInflater原理分析,带你一步步深入了解View(一)

原文地址:http://blog.csdn.net/guolin_blog/article/details/12921889 在此转载,已背不时之需 有段时间没写博客了,感觉都有些生疏了呢。最近繁忙的工作终于告一段落,又有时间写文章了,...

工作日
2014/02/26
0
0
LayoutInflater布局管理器

LayoutInflater作用是将layout的xml布局文件实例化为View类对象。 实现LayoutInflater的实例化共有3种方法, (1).通过SystemService获得 LayoutInflater inflater = (LayoutInflater)contex...

Carbenson
2015/08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

wordpress 汉化

在 wp-config.php 添加 define('WPLANG','zh_CN'); 在后台,更新 now ,即可。

james_laughing
15分钟前
0
0
Android JNI开发系列(十一) JNI 访问父类的构造方法和父类实例方法

JNI 访问父类的构造方法和父类实例方法 构造方法和父类实例方法 先看一段Java代码, Java package org.professor.jni.animal;import android.util.Log;public class Animal {protecte...

蔡小鹏
22分钟前
0
0
腾讯投资最高1.75亿美元正式进军菲律宾移动支付市场

菲律宾长途电话公司(PLDT)公司今日宣布,中国互联网巨头腾讯和私募股权公司KKR将获得该公司旗下金融科技公司Voyager Innovations的少数股权。 PLDT在一份声明中称:“腾讯和KKR最多将分别收...

linuxCool
49分钟前
2
0
正则介绍及grep/egrep用法

10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data 正则介绍 正则就是一串有规律的字符...

hhpuppy
今天
2
0
J2Cache 中使用 Lettuce 替代 Jedis 管理 Redis 连接

一直以来 J2Cache 都是使用 Jedis 连接 Redis 服务的。Jedis 是一个很老牌的 Redis 的 Java 开发包,使用很稳定,作者维护很勤勉,社区上能搜到的文章也非常非常多。算是使用范围最广的 Redi...

红薯
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部