inflate 方法与 findViewById方法的区别
2016-12-14 21:31
267 查看
不同点:layoutinflater是用来找res/layout/下的xml布局文件,并且实例化;而findviewbyid()是找xml布局文件下的具体widget控件(如button、textview等)。
具体作用:
1、对于一个没有被载入或者想要动态载入的界面,都需要使用layoutinflater.inflate()来载入;
2、对于一个已经载入的界面,就可以使用activiyt.findviewbyid()开发方法 来获得其中的界面元素。
layoutinflater作用是将layout的xml布局文件实例化为view类对象。
获取layoutinflater的开发方法 有如下三种:
layoutinflater inflater=(layoutinflater)context.getsystemservice(context.layout_inflater_service);
view layout = inflater.inflate(r.layout.main, null);
layoutinflater inflater = layoutinflater.from(context); (该开发方法 实质就是第一种开发方法 ,可参考源代码)
view layout = inflater.inflate(r.layout.main, null);
layoutinflater inflater = getlayoutinflater();(在activity中可以使用,实际上是view子类下window的一个函数)
view layout = inflater.inflate(r.layout.main, null);
注意:
·inflate开发方法 与
findviewbyid 开发方法 不同;
·inflater
是用来找 res/layout下的 xml 布局文件,并且实例化;
·findviewbyid()
是找具体 xml 布局文件中的具体 widget 控件(如:button、textview 等)。
public class myinflate extends activity{
private textview tv;
public void oncreate(bundle savedinstancestate){
super.oncreate(savedinstancestate);
//setcontentview(r.layout.main);
//tv = (textview) findviewbyid(r.id.tv);
layoutinflater inflate = layoutinflater.from(this);
view view = inflate.inflate(r.layout.main,null);
setcontentview(view);
}
}
上述
此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com
注释掉的代码和没有注释掉的代码两种情况是相同的。
区别:
setcontentview()一旦调用,
layout就会立刻显示ui;而inflate只会把layout形成一个以view类实现成的对象,有需要时再用setcontentview(view)显示出来。一般在activity中通过setcontentview()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要layoutinflater动态加载。
public view inflate(int resourece,viewgroup root)
作用:填充一个新的视图层次结构从指定的xml资源文件中
resource:view的layout的id
root: 生成的层次结构的根视图
return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的xml文件的根就是根视图。
其余几个重载的inflate函数类似。
具体方法请看我下一篇 博客
具体作用:
1、对于一个没有被载入或者想要动态载入的界面,都需要使用layoutinflater.inflate()来载入;
2、对于一个已经载入的界面,就可以使用activiyt.findviewbyid()开发方法 来获得其中的界面元素。
layoutinflater作用是将layout的xml布局文件实例化为view类对象。
获取layoutinflater的开发方法 有如下三种:
layoutinflater inflater=(layoutinflater)context.getsystemservice(context.layout_inflater_service);
view layout = inflater.inflate(r.layout.main, null);
layoutinflater inflater = layoutinflater.from(context); (该开发方法 实质就是第一种开发方法 ,可参考源代码)
view layout = inflater.inflate(r.layout.main, null);
layoutinflater inflater = getlayoutinflater();(在activity中可以使用,实际上是view子类下window的一个函数)
view layout = inflater.inflate(r.layout.main, null);
注意:
·inflate开发方法 与
findviewbyid 开发方法 不同;
·inflater
是用来找 res/layout下的 xml 布局文件,并且实例化;
·findviewbyid()
是找具体 xml 布局文件中的具体 widget 控件(如:button、textview 等)。
public class myinflate extends activity{
private textview tv;
public void oncreate(bundle savedinstancestate){
super.oncreate(savedinstancestate);
//setcontentview(r.layout.main);
//tv = (textview) findviewbyid(r.id.tv);
layoutinflater inflate = layoutinflater.from(this);
view view = inflate.inflate(r.layout.main,null);
setcontentview(view);
}
}
上述
此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com
注释掉的代码和没有注释掉的代码两种情况是相同的。
区别:
setcontentview()一旦调用,
layout就会立刻显示ui;而inflate只会把layout形成一个以view类实现成的对象,有需要时再用setcontentview(view)显示出来。一般在activity中通过setcontentview()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要layoutinflater动态加载。
public view inflate(int resourece,viewgroup root)
作用:填充一个新的视图层次结构从指定的xml资源文件中
resource:view的layout的id
root: 生成的层次结构的根视图
return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的xml文件的根就是根视图。
其余几个重载的inflate函数类似。
具体方法请看我下一篇 博客
相关文章推荐
- linux c之shm共享内存的使用例子
- eclipse使用教程
- C#Socket编程多客户端基于同一服务端通信
- MFC基于对话框的用Picture Control显示OpenGL
- JsBridge与客户端交互
- POJ 1942Paths on a Grid(组合数学)
- nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)问题的解决
- mongodb中的populate方法
- TCP协议与UDP协议的异同
- 后缀数组(不可重叠最长重复子串)
- 框架 day77 涛涛商城项目-前台系统及门户搭建,JSONP解决跨域ajax请求
- 一步一步学习数据结构(4)-树和二叉树基础知识
- 飞行棋游戏(控制台)
- 【leetcode】46. Permutations 【回溯问题的通用方法】【java】
- Apache如何进行模拟高并发压力测试?
- nginx配置文件详解
- 快速排序法
- Dlib库中实现正脸人脸关键点(landmark)检测的测试代码
- 实验12
- Dlib库中实现正脸人脸关键点(landmark)检测的测试代码