Android 中 LayoutInflater.inflate 方法的参数说明

常用(其他 inflate 方法最终调用)的方法为
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)

root 只是用来产生LayoutParams,且类型和 root 是对应的。如 root 为 LinearLayout,则子布局产生的 LayoutParam 参数就是 LinearLayout.LayoutParam 类型的,这时,子布局只能添加到 Linearlayout 的父容器中,如果添加到其他类型容器中,就会报错,即父容器的类型必须和产生子布局 LayoutParam 的 ViewGroup(即方法中的 root) 类型一致。

而 attachToRoot 则是用来决定当前布局是否直接添加到root 里。

过程描述

如果 root != null,则首先会产生子布局的 LayoutParam,即 子布局中设置的参数
此时,如果 attachToRoot == true,则子布局直接会添加到当前容器中,后面不能再调用 addView() 方法;如果 attachToRoot == false,则后面要调用 addView() 方法才会将子布局添加到当前父容器中。

如果 root == null,则无论 attachToRoot == false 还是 true,都要调用 addView(view) 方法,子布局才会显示,且只会按最小的尺寸显示,即 wrap_content。如果想修改子布局的大小,则可以调用有 LayoutParam 参数的 addView 方法。

总结:

1.当 root == null 时必须调用 addView 方法子布局才会显示;
2. 当 root != null 时
attachToRoot == true,则不用且不能调用 addView 方法;
attachToRoot == false,则要调用 addView 方法,且不用传 LayoutParam 参数,子布局就会按 xml 中设置的大小显示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值