Android中獲取控制元件尺寸的時機
阿新 • • 發佈:2018-12-12
在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(); }
});