LayoutInflater 类的使用
转 http://yxwang0615.iteye.com/blog/1711147
一个Activity里如果直接用findViewById(),对应的是setConentView()的那个layout里的组件,因此如果你的
Activity里如果用到别的layout,你就必须用inflate()先将对话框上的layout找出来,然后再用这个layout对
象去找到它上面的组件,
- public View inflate(Context context, int Resourece,ViewGroup root)
- 作用:填充一个新的视图层次结构从指定的XML资源文件中
- context : The Context object for your activity or application
- reSource:View的layout的ID
- root: 生成的层次结构的根视图
- return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。
public View inflate(Context context, int Resourece,ViewGroup root)
作用:填充一个新的视图层次结构从指定的XML资源文件中
context : The Context object for your activity or application
reSource:View的layout的ID
root: 生成的层次结构的根视图
return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。
View view = View.inflate(this, R.layout.dialog_layout, null);
TextView dialogTV = (TextView) view.findViewById(R.id.dialog_tv);
dialogTV.setText("abcd");
setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,
有需要时再用setContentView(view)显示出来。一般在activity中通过setContentView()将界面显示出来,
然后才能使用findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)
但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载。
LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化。
- LayoutInflater inflater = LayoutInflater.from(this);
- View view=inflater.inflate(R.layout.ID, null);
- //或者干脆并成一句:
- View view=LayoutInflater.from(this).inflate(R.layout.ID, null);
LayoutInflater inflater = LayoutInflater.from(this);
View view=inflater.inflate(R.layout.ID, null);
//或者干脆并成一句:
View view=LayoutInflater.from(this).inflate(R.layout.ID, null);
或者:
- LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
- View view=inflater.inflate(R.layout.ID, null);
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
View view=inflater.inflate(R.layout.ID, null);
android.view.View类中也有一个inflater方法:
- public static View inflate (Context context, int resource, ViewGroup root)
- Inflate a view from an XML resource. This convenience method wraps the LayoutInflater class, which provides a full range of options for view inflation.
- Parameters
- context The Context object for your activity or application.
- resource The resource ID to inflate
- root A view group that will be the parent. Used to properly inflate the layout_* parameters.
public static View inflate (Context context, int resource, ViewGroup root) Inflate a view from an XML resource. This convenience method wraps the LayoutInflater class, which provides a full range of options for view inflation.
Parameters context The Context object for your activity or application.
resource The resource ID to inflate
root A view group that will be the parent. Used to properly inflate the layout_* parameters.
该方法和LayoutInflater中的inflater方法区别不明,查api也没看明白:
- public View inflate (int resource, ViewGroup root)
- Inflate a new view hierarchy from the specified xml resource. Throws InflateException if there is an error.
- Parameters
- resource ID for an XML layout resource to load (e.g., R.layout.main_page)
- root Optional view to be the parent of the generated hierarchy.
- Returns
- The root View of the inflated hierarchy. If root was supplied, this is the root View; otherwise it is the root of the inflated XML file.
public View inflate (int resource, ViewGroup root)
Inflate a new view hierarchy from the specified xml resource. Throws InflateException if there is an error. Parameters resource ID for an XML layout resource to load (e.g., R.layout.main_page)
root Optional view to be the parent of the generated hierarchy. Returns
The root View of the inflated hierarchy. If root was supplied, this is the root View; otherwise it is the root of the inflated XML file.
一般在adapter的getview方法中使用View.inflate的比较多,最近在研究自定义下拉刷新listview的时候,使用了View.inflate一直报如下错误:
- mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- shView = (RelativeLayout) mInflater.inflate(R.layout.pull_to_refresh_header, this, false);
- //mRefreshView = (RelativeLayout)View.inflate(context, R.layout.pull_to_refresh_header, null);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mRefreshView = (RelativeLayout) mInflater.inflate(R.layout.pull_to_refresh_header, this, false);
//mRefreshView = (RelativeLayout)View.inflate(context, R.layout.pull_to_refresh_header, null);
- android.view.InflateException: Binary XML file line #10: Error inflating class com.markupartist.android.widget.PullToRefreshListView
android.view.InflateException: Binary XML file line #10: Error inflating class com.markupartist.android.widget.PullToRefreshListView
而使用 LayoutInflater 就没事,原因翻阅很多资料都没弄明白,看样子定义控件的inflate还是使用
LayoutInflater 吧!
LayoutInflater 类的使用的更多相关文章
- LayoutInflater类详解
http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html 在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于 ...
- [Android FrameWork 6.0源码学习] LayoutInflater 类分析
LayoutInflater是用来解析XML布局文件,然后生成对象的ViewTree的工具类.是这个工具类的存在,才能让我们写起Layout来那么省劲. 我们接下来进去刨析,看看里边的奥秘 //调用i ...
- Android LayoutInflater 类分析
作为一名Android开发者,写页面是最普通不过的事情了,在编写页面的时候,系统给提供了两种形式,一种形式是通过XML的方式进行编写,还有一种形式是通过Java代码直接编写 我们知道Android ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 转载《 LayoutInflater 的inflate函数用法详解》
很多人在网上问LayoutInflater类的用法,以及inflate()方法参数的含义,现解释如下: inflate()的作用就是将一个用xml定义的布局文件查找出来,注意与findViewById ...
- Android中将xml布局文件转化为View树的过程分析(下)-- LayoutInflater源码分析
在Android开发中为了inflate一个布局文件,大体有2种方式,如下所示: // 1. get a instance of LayoutInflater, then do whatever yo ...
- LayoutInflater和inflate()
LayoutInflater LayoutInflater抽象类是用来加载XML布局文件(UI界面)的. 作用: 1.对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater. ...
- Android LayoutInflater.inflate()的参数及其用法
很多人在网上问LayoutInflater类的用法,以及inflate()方法参数的含义,现解释如下: inflate()的作用就是将一个用xml定义的布局文件查找出来,注意与findViewById ...
- View inflate方法和LayoutInflater inflate方法的区别详解
原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/6257510.html 我们在Android开发中,对于将布局填充成View对象,最常用的两种办法 ...
随机推荐
- BITMAP图片压缩算法三则--bilinear、nearest、cubic
原文:http://blog.chinaunix.net/uid-253932-id-3037805.html 工作需要,要弄截图且缩小.截图倒是好说,WIN API可以搞定,但是缩小且尽量不失真,这 ...
- Web开发人员不要错过的60款用户界面设计工具(下)
41. Snipplr 包含最新的脚本和jQuery技术资源库. 42. Midori Midori是一个超轻量级的JavaScript框架,可使用CSS选择器快速访问页面上对应的元素. 43. ro ...
- linux fdisk
fdisk 对硬盘及分区的操作,进入fdisk 对硬盘操作阶段 我们可以对硬盘进行分区操作,前提是您把fdisk -l 弄明白了:通过fdisk -l ,我们能找出机器中所有硬盘个数及设备名称:比如上 ...
- (转) 三个nginx配置问题的解决方案
今天开启了nginx的error_log,发现了三个配置问题: 问题一: 2011/07/18 17:04:37 [warn] 2422#0: *171505004 an upstream respo ...
- 小Q系列故事——电梯里的爱情
小Q系列故事——电梯里的爱情 Time Limit : 300/100ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total ...
- Hadoop2.6.0 动态增加节点
本文主要从基础准备,添加DataNode和添加NodeManager三个部分详细说明在Hadoop2.6.0环境下,如何动态新增节点到集群中. 基础准备 在基础准备部分,主要是设置hadoop运行的系 ...
- Ansible4:Ad-hoc与命令执行模块【转】
Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbook.Ad-hoc的执行依赖于模块,ansible官方提供了大量的模块. 如:command ...
- Ansible2:主机清单【转】
Ansible 通过读取默认的主机清单配置/etc/ansible/hosts,可以同时连接到多个远程主机上执行任务, 默认路径可以通过修改 ansible.cfg 的 hostfile 参数指定路径 ...
- 使用onclick跳转到其他页面。使用button跳转到指定url
1. onclick="javascript:window.location.href='aa.htm'" 2. onclick="location='URL'&quo ...
- code.google.com
https://github.com/couchbase/sync_gateway/issues/492 This list shows the current base import paths, ...