天天看點

如何在onCreate中擷取View的高度和寬度

如何在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());

        }

    });

}

繼續閱讀