Inflate使用小结

inflate 的两个调用方法

1. 使用View中的静态方法View.inflate()

public static View inflate(Context context, @LayoutRes int resource, ViewGroup root) 

2.使用LayoutInflater中的inflate()方法,在LayoutInflater类中有几个重载方法

public View inflate(@LayoutRes int resource, @Nullable ViewGroup root)  
public View inflate(XmlPullParser parser, @Nullable ViewGroup root)  
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)  
public View inflate(XmlPullParser parser, @Nullable ViewGroup root, boolean attachToRoot) 

其实,如果查看过这几个方法的调用过程我们就会发现这几个方法不管调用的是哪一个,最终调用的都是 inflate(XmlPullParser parser, @Nullable ViewGroup root, boolean attachToRoot)这个方法

所以重点关注一下inflate三个参数的方法

inflate(int resource, ViewGroup root, boolean attachToRoot)
  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。

两个参数的方法

我们看一下源码就可以知道

public View inflate(@LayoutRes int resource, @Nullable ViewGroup root) {
        return inflate(resource, root, root != null);
    }

1.如果root为null,那么参数就为 null false 等同于上述1的情况。
2.root不为null,等同于上述2的情况。

注意:
Fragment的onCreateView(),该方法返回Fragment的UI布局,需要注意的是inflate()的第三个参数是false,因为在Fragment内部实现中,会把该布局添加到container中,如果设为true,那么就会重复做两次添加,则会抛出异常。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鑫宇_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值