首页 新闻 会员 周边

Android 获取屏幕宽度的时候

0
悬赏园豆:10 [已解决问题] 解决于 2016-10-14 11:42

什么时候获取宽度好一些,因为有些时候获取屏幕宽度是0,要过会才有数值

智商不在线的主页 智商不在线 | 初学一级 | 园豆:199
提问于:2016-10-11 17:59
< >
分享
最佳答案
0

设备屏幕是恒定的,只有窗口容器才不恒定,而视图体系抛开设备无关宽度后还存在布局控件等 —— 意味着得到的值肯定不可能恒定,只取决于你的需求而已,你想想一下一个stack是被子控件撑开的,而子控件都没构建出来,你说怎么不为0。

收获园豆:10
花飘水流兮 | 专家六级 |园豆:13560 | 2016-10-14 11:35
其他回答(2)
0

问题已解决,可以使用view.post方法

智商不在线 | 园豆:199 (初学一级) | 2016-10-14 11:41
0

要获取View的宽和高,必须待View已经测量完毕了,如果view还没有测量完成,获取到的宽高就是0。view的测量过程和Activity的生命周期不是同步的。所以在 Activity 的 onCreate 、 onStart、onResume 方法中获取View的宽高可能都为0。

下面四种方法都可以:

  1.在Activity的 onWindowFocusChanged 方法中去获取。

  2.通过 view.post() 将消息投递到消息队列尾部,等到处理该消息的时候,View也经济初始化好了。

  3.使用ViewTreeObserver中的回调方法,当View状态发生变化时,都会回调。比如view从无到有。这个方法会回调多次。

  4.view.measure(),这个方法实际就是手动调用view的测量方法,过程比较复杂,具体使用方法可以查看源码,或者查找其他相关资料。

  4.

SharpCJ | 园豆:242 (菜鸟二级) | 2016-11-30 18:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册