2011-10-15 57 views
5

我試圖獲取其中的android:layout_width設置爲wrap_content的按鈕的寬度。當我嘗試使用getMeasuredWidth()onCreate()中這樣做時,我得到的值爲零,因爲我認爲該視圖尚未準備好。Android - 獲取設置爲wrap_content的按鈕的寬度

什麼時候該得到寬度呢?當視圖完成初始化時,是否有任何偵聽器可以掛鉤?

回答

13

您可以添加樹觀察者到佈局。這應該返回正確的寬度和高度。在子視圖佈局完成之前調用onCreate。所以寬度和高度尚未計算。獲取高度和寬度。將這個在onCreate方法

LinearLayout layout = (LinearLayout)findViewById(R.id.YOUD VIEW ID); 
ViewTreeObserver vto = layout.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     this.layout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
     int width = layout.getMeasuredWidth(); 
     int height = layout.getMeasuredHeight(); 

    } 
}); 
+1

FYI:'removeGlobalOnLayoutListener'在新的API過時,它是'removeOnGlobalLayoutListener'現在。欲瞭解更多信息:http://stackoverflow.com/a/16190337/487940 – harsimranb

相關問題