onCreate中View的width,height为0的问题

FBI Warning:欢迎转载,,但请标明出处:,未经本人同意请勿用于商业用途,感谢支持!

为什么呢?

width、onCreate执行。

解决方法一:用View.post()一个runnable就可以了:

view.post(new Runnable() {@Overridepublic void run() {view.getHeight();}});(UI线程消息队列会按顺序处理事件,在setContentView()被调用后,消息队列中会包含一个要求重新Layout的msg,所以任何你post到UI线程队列中的东西都会在Layout后执行。)

解决方法二:重写Activity的onWindowFocusChanged方法

@Overridepublic void onWindowFocusChanged(boolean hasFocus) {super.onWindowFocusChanged(hasFocus);//此处可以正常获取width、height等}

解决方法三:为View注册监听器OnGlobalLayoutListener

mView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {//此处可以正常获取width、height等mView.getViewTreeObserver().removeOnGlobalLayoutListener(this);}});

(说明:视图树的可视性或全局布局状态发生变化时执行的回调函数,此时已经完成Layout过程,可能会被多次调用,所以获取完后就可以移除监听器)

摘抄美文4、承诺是一件美好的事情,但美好的东西往往不会变为现实。

onCreate中View的width,height为0的问题

相关文章:

你感兴趣的文章:

标签云: