android中LayoutInflater的使用(android.view.LayoutInflater)
16lz
2021-01-23
http://dev.10086.cn/cmdn/wiki/index.php?doc-view-6066.html
Inflater英文意思是膨胀,在Android中应该是扩展的意思吧。
LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。
(0)她可以有很多地方可以使用,如BaseAdapter的getView中,自定义Dialog中取得view中的组件widget等等。
它的用法有2种:
- viewplaincopytoclipboardprint?
- LayoutInflaterinflater=LayoutInflater.from(this);
- Viewview=inflater.inflate(R.layout.ID,null);
- 或者干脆并成一句:
- Viewview=LayoutInflater.from(this).inflate(R.layout.ID,null);
另一种方法: 复制到剪贴板Java代码
- viewplaincopytoclipboardprint?
- LayoutInflaterinflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
- Viewview=inflater.inflate(R.layout.ID,null);
上面2种方法本质上是一样的,看下面的源码,form()调用的就是getSystemService(): 复制到剪贴板Java代码
- Java代码
- publicstaticLayoutInflaterfrom(Contextcontext){
- LayoutInflaterLayoutInflater=
- (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- if(LayoutInflater==null){
- thrownewAssertionError("LayoutInflaternotfound.");
- }
- returnLayoutInflater;
- }
另外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代码
- Java代码
- //基本用法
- publicvoidshowCustomDialog(){
- AlertDialog.Builderbuilder;
- AlertDialogalertDialog;
- ContextmContext=AppActivity.this;
- //下面俩种方法都可以
- //LayoutInflaterinflater=getLayoutInflater();
- LayoutInflaterinflater=(LayoutInflater)
- mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
- Viewlayout=inflater.inflate(R.layout.custom_dialog,null);
- TextViewtext=(TextView)layout.findViewById(R.id.text);
- text.setText("Hello,WelcometoMrWei'sblog!");
- ImageViewimage=(ImageView)layout.findViewById(R.id.image);
- image.setImageResource(R.drawable.icon);
- builder=newAlertDialog.Builder(mContext);
- builder.setView(layout);
- alertDialog=builder.create();
- alertDialog.show();
- }
- }
- protectedvoidshowToast(inttype){
- Toast.makeText(this,"*********",Toast.LENGTH_LONG).show();
- LayoutInflaterli=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- Viewview=li.inflate(R.layout.toast,null);
- Toasttoast=newToast(this);
- toast.setView(view);
- toast.setDuration(type);
- toast.show();
- }
更多相关文章
- Android 记忆卡片游戏 记忆力 Android游戏 Android记忆卡片游戏
- android 源代码在线查看和索引
- Android系统默认Home应用程序(Launcher)的启动过程源代码分析(3)
- Android通过chrome插件在线查看Android源代码
- 关于repo下载android代码时候错误的处理。
- Android系统在新进程中启动自定义服务过程(startService)的原理分
- Android 之如何添加 android private libraries 中的包的源代码
- Android 7.0 之后抓包 unknown 和证书无效的解决方案(无需改代码)