inflate 方法与 findViewById方法的区别

不同点:layoutinflater是用来找res/layout/下的xml布局文件,并且实例化;而findviewbyid()是找xml布局文件下的具体widget控件(如button、textview等)。

具体作用:

1、对于一个没有被载入或者想要动态载入的界面,都需要使用layoutinflater.inflate()来载入;

2、对于一个已经载入的界面,就可以使用activiyt.findviewbyid()开发方法 来获得其中的界面元素。

 

layoutinflater作用是将layoutxml布局文件实例化为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
viewlayoutid
root
 生成的层次结构的根视图
return 
填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的xml文件的根就是根视图。

其余几个重载的inflate函数类似。


具体方法请看我下一篇 博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值