如何在onCreate中擷取View的高度和寬度
原文連結:
http://mp.weixin.qq.com/s?__biz=MzAwODE1NTI2MQ==&mid=2247483676&idx=1&sn=0ddc1a4dd1decb1749402f70ba340739&chksm=9b72780eac05f118d7a304010b82b63275b1feda82647a19ae3f63672002472315a4ddebaef7#rd在開發過程中經常需要擷取到View的寬和高,可以通過View.getWidth()和View.getHeight()來得到寬高。然而新手們經常在onCreate方法中直接調用上面兩個方法得到的值是0!
這是為什麼呢?
因為View繪制是通過兩個周遊來完成的,一個measure過程,一個layout過程。隻有經過“測量”和“布局”之後,View才能正确地完成繪制。而這一切是發生在onCreate方法之後的。是以在onCreate中直接使用View.getWidth()和View.getHeight()是無法得到正确的值的。
那應該怎麼onCreate中擷取View的寬高呢?
開發者可以通過View.post()方法來擷取到View的寬高,該方法傳遞一個Runnable參數,然後将其添加到消息隊列中,最後在UI線程中執行。
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view.post(new Runnable(){
public void run(){
//在這裡使用View.getWidth()和View.getHeight()方法可以得到正确的值
Log.d(TAG,"view.width="+view.getWidth()+",view.height="+view.getHeight());
}
});
}