Fragment中view.getWidth()=0的问题解决

昨天在项目中使用到游标动画,需要测量游标和父容器的宽度,于是在OnGlobalLayoutListener中getWidth,但是打印的结果始终为0。因为这个方法是在布局加载完成后进行调用的,按理来说是可以获取到控件宽度的。


后面想到项目的布局MainActivity中FrameLayout里包含了三个Fragment,也就是底部导航栏的三个部分。在MainActivity中我做了判断,显示默认的Fragment,将其他Fragment隐藏。所以,我在Fragment的OnCreateView写下OnGlobalLayoutListener中的内容,实际上执行的时候,这个Fragment已经隐藏掉了,自然获取不到Width。


解决方法:

在该Fragment中重写OnHiddenChanged方法,判断Hidden,当Fragment显示在前台的时候执行getWidth的那段代码,就可以成功拿到数据了。


这个问题也搞了蛮久,在此记录一下。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值