文章来源:http://blog.csdn.net/zuolongsnail/article/details/6370035

在实际工作中,事先写好的布局文件往往不能满足我们的需求,有时会根据情况在代码中自定义控件,这就需要用到LayoutInflater。
LayoutInflater在Android中是“扩展”的意思,作用类似于findViewById(),不同的是LayoutInflater是用来获得布局文件对象的,而

findViewById()是用来获得具体控件的。LayoutInflater经常在BaseAdapter的getView方法中用到,用来获取整个View并返回。
LayoutInflater的用法有三种:

第一种方法:

[java] view plain copy
  1. LayoutInflaterinflater=LayoutInflater.from(this);
  2. Viewlayout=inflater.inflate(R.layout.main,null);

第二种方法:

[java] view plain copy
  1. LayoutInflaterinflater=getLayoutInflater();
  2. Viewlayout=inflater.inflate(R.layout.main,null);

第三种方法:

[java] view plain copy
  1. LayoutInflaterinflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
  2. Viewlayout=inflater.inflate(R.layout.main,null);

第一种方法的本质就是调用第三种方法,而第二种方法和第三种方法有什么区别,我还真不知道,有哪位知道的请留言指教啊!

下面是简单的使用示例:

[java] view plain copy
  1. publicclassLayoutInflaterActivityextendsActivity{
  2. privateEditTextet;
  3. privateButtonbtn;
  4. @Override
  5. publicvoidonCreate(BundlesavedInstanceState){
  6. super.onCreate(savedInstanceState);
  7. //第一种方法
  8. LayoutInflaterinflater=LayoutInflater.from(this);
  9. Viewlayout=inflater.inflate(R.layout.main,null);
  10. //第二种方法
  11. //LayoutInflaterinflater=getLayoutInflater();
  12. //Viewlayout=inflater.inflate(R.layout.main,null);
  13. //第三种方法
  14. //LayoutInflaterinflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
  15. //Viewlayout=inflater.inflate(R.layout.main,null);
  16. //这里是通过事先获得的布局文件来实例化具体控件,并且可以根据情况自定义控件
  17. et=(EditText)layout.findViewById(R.id.edittext);
  18. et.setBackgroundColor(Color.YELLOW);
  19. btn=(Button)layout.findViewById(R.id.btn);
  20. btn.setBackgroundColor(Color.CYAN);
  21. //显示
  22. setContentView(layout);
  23. }
  24. }

另外补充下,getSystemService是Activity中的方法,根据传入的name来取得对应的服务对象,这些服务名称参数都是Context类中的常量:

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

更多相关文章

  1. Android即时通讯服务,类似QQ的聊天工具,源码分享
  2. 赵雅智:Android短信发送器
  3. android之Service(3)Bound Service
  4. No resource found that matches the given name (at 'xxx' with
  5. kotlin配置
  6. Android(安卓)众多的布局属性详解
  7. Android应用开发之( TableLayout中stretchColumns、shrinkColumns
  8. android 自定义控件的style
  9. Android(安卓)根据屏幕尺寸适配控件尺寸(按比例缩放)

随机推荐

  1. Android(安卓)进阶16:IntentService 使用
  2. android迁移到androidx问题解决
  3. webview开发-适配多分辨率的Android设备
  4. Android(安卓)UI开发第十七篇——Android
  5. [摘]android:windowSoftInputMode属性使
  6. Android单位转换工具类
  7. android通话流程浅析RIL层
  8. Android(安卓)slidingmenu详解 优化侧滑
  9. Android开发资源整理
  10. Android签名验证漏洞POC及验证