Fragment中view.getWidth()=0的问题解决
昨天在项目中使用到游标动画,需要测量游标和父容器的宽度,于是在OnGlobalLayoutListener中getWidth,但是打印的结果始终为0。因为这个方法是在布局加载完成后进行调用的,按理来说是可以获取到控件宽度的。后面想到项目的布局MainActivity中FrameLayout里包含了三个Fragment,也就是底部导航栏的三个部分。在MainActivity中我做了判断,
·
昨天在项目中使用到游标动画,需要测量游标和父容器的宽度,于是在OnGlobalLayoutListener中getWidth,但是打印的结果始终为0。因为这个方法是在布局加载完成后进行调用的,按理来说是可以获取到控件宽度的。
后面想到项目的布局MainActivity中FrameLayout里包含了三个Fragment,也就是底部导航栏的三个部分。在MainActivity中我做了判断,显示默认的Fragment,将其他Fragment隐藏。所以,我在Fragment的OnCreateView写下OnGlobalLayoutListener中的内容,实际上执行的时候,这个Fragment已经隐藏掉了,自然获取不到Width。
解决方法:
在该Fragment中重写OnHiddenChanged方法,判断Hidden,当Fragment显示在前台的时候执行getWidth的那段代码,就可以成功拿到数据了。
这个问题也搞了蛮久,在此记录一下。
更多推荐
已为社区贡献1条内容
所有评论(0)