关于LayoutInflater的一些总结

写过android的同学应该会有所感觉,findViewById的作用跟LayoutInfalter有些类似,但是主要区别是,findViewById是查找到xml文件中的具体的view,(Button,TextView等等)而LayoutInflater则是查找到layout中的布局文件,并且实例化它.

关于LayoutInflater的实例化主要有三种方法
  1   LayoutInflater inflater = getLayoutInflater();
  2   LayoutInflater inflater =LayoutInflater.from(context);
  3   LayoutInflater inflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

虽然形式上差别很大,但是分析源码的话会发现,其实都是调用getSystemService的方法.

最后调用inflate的方法就能实例化你的布局文件了

View view = inflater.inflate(R.layout.xxx,null);
//xxx为自己想要实例化的布局文件的名字
同时inflate()有两个重载的函数,一个为inflate(int resource,viewGroup root)还有一个为inflate(int resource,viewGroup root,boolean attachToRoot)
那这两个方法有什么区别呢?
inflate(int resource,viewGroup root,boolean attachToRoot)

    第一个参数为指定的需要实例化的布局文件,第二个参数表明在需要实例化布局文件添加一层父布局,第三个参数判断是否需要为实例化的布局添加前面定义过的root父布局。
    1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。
(这就是我们刚才的有两个参数的重载方法的来源)
    2. 如果root不为null,attachToRoot设为true,则会给加载的布局文件的指定一个父布局,即root。

    3. 如果root不为null,attachToRoot设为false,则会将布局文件最外层的所有layout属性进行设置,当该view被添加到父view当中时,这些layout属性会自动生效。

    4. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true
本文结束!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值