Bug: LayoutInflater.inflate


在使用SlidingTabLayout 测试实现ViewPager页卡滑动效果时,出现一个bug,经过一番百度查询,发现问题是LayoutInflater.inflate()使用

就总结了一下inflate()的使用注意点。


inflate(int resource, ViewGroup root, boolean attachToRoot) 

第一个参数 resource:布局文件的id;

第二个参数 root:可选参数,布局文件resource参数设置的参照物就是这个root,也就是说inflate方法会根据root的大小,将布局文件

resource参数转换成LayoutParam对象;

第三个参数官方解释:是否将source布局添加到root中;


如果 inflate(resource,root);

inflate里面把ViewGroup传进去了,因为每一个View只能有一个父view即parentView。当container不为空时,比如此fragment所待在的activity的

layout。而onCreateView中返回的view是给ViewPager使用的,所以就会出现这个view有两个parentView-即activity的layout和viewPager,所以会报出异常。

只要如下解决即可:

1,infalte的时候把ViewGroup参数设置为null,view的parentView是ViewPager,ViewPager的parentView是activity的layout。

2,infalte设置参数为false。


如果 inflate(resource, null);

就等同于忽略了XML中的layout_width,layout_height


如果 inflate(resource, root, true);

那就会根据root生成一个布局文件resource的LayoutParam对象,并将这个resource添加到root中

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值