LayoutInflater和inflate()方法的用法

网友投稿 283 2022-11-07

LayoutInflater和inflate()方法的用法

LayoutInflater作用是将layout的xml布局文件实例化为View类对象。

实现LayoutInflater的实例化共有3种方法,

(1).通过SystemService获得

LayoutInflaterinflater = (LayoutInflater)context.getSystemServices(Context.LAYOUT_INFLATER_SERVICES); Viewview = inflater.inflate(R.layout.main, null);

(2).从给定的context中获得

LayoutInflaterinflater = LayoutInflater.from(context); Viewview = inflater.inflate(R.layout.mian, null);

(3).

LayoutInflaterinflater =getLayoutInflater();//(在Activity中可以使用,实际上是View子类下window的一个函数) Viewlayout = inflater.inflate(R.layout.main, null);

其实,这三种方式本质是相同的,从源码中可以看出:

getLayoutInflater():

Activity的getLayoutInflater()方法是调用PhoneWindow的getLayoutInflater()方法,看一下该源代码:

publicPhoneWindow(Contextcontext) { super(context); mLayoutInflater= LayoutInflater.from(context); }

可以看出它其实是调用LayoutInflater.from(context)。

LayoutInflater.from(context):

public static LayoutInflaterfrom(Context context) { LayoutInflaterLayoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if(LayoutInflater== null){ thrownew AssertionError("LayoutInflaternot found."); } returnLayoutInflater; }

可以看出它其实调用context.getSystemService()。

public View inflate(int Resourece,ViewGrouproot)作用:填充一个新的视图层次结构从指定的XML资源文件中reSource:View的layout的IDroot: 生成的层次结构的根视图return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Maven:mirror和repository 区别
下一篇:Spring bean配置单例或多例模式方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~