1. 程式人生 > >Android中獲取控制元件尺寸的時機

Android中獲取控制元件尺寸的時機

在Android開發的時候,我們通常要獲取控制元件的大小。在activity中獲取控制元件的大小,onCreate()方法獲取到的值往往是0,是因為在系統執行該方法的時候,控制元件還沒有繪製完成。而在activity獲取或失去焦點的時候會呼叫一個onWindowFocusChanged()方法,(我們獲取控制元件的大小,只關心控制元件已完全繪製完成,當window獲得焦點即表示介面處於已經繪製完成並已呈現可互動狀態)因此在activity中我們可以在onWindowFocusChanged()方法中獲取控制元件的大小;

@Override

public void onWindowFocusChanged(boolean hasFocus){

super.onWindowFocusChanged();

//執行獲取控制元件大小操作

}

而在Fragment中,沒有提供onWindowFocusChanged()方法,但是我們可以用過viewTreeObserver協助獲取

ViewTreeObserver vto=view.getViewTreeObserver();

vto.addOnGloableLayoutListener(new OnGloableLayoutListener(){

@Override public void onGlobalLayout() { // TODO 自動生成的方法存根 int viewWidth = view.getWidth(); }

});