5
我試圖獲取其中的android:layout_width
設置爲wrap_content
的按鈕的寬度。當我嘗試使用getMeasuredWidth()
在onCreate()
中這樣做時,我得到的值爲零,因爲我認爲該視圖尚未準備好。Android - 獲取設置爲wrap_content的按鈕的寬度
什麼時候該得到寬度呢?當視圖完成初始化時,是否有任何偵聽器可以掛鉤?
我試圖獲取其中的android:layout_width
設置爲wrap_content
的按鈕的寬度。當我嘗試使用getMeasuredWidth()
在onCreate()
中這樣做時,我得到的值爲零,因爲我認爲該視圖尚未準備好。Android - 獲取設置爲wrap_content的按鈕的寬度
什麼時候該得到寬度呢?當視圖完成初始化時,是否有任何偵聽器可以掛鉤?
您可以添加樹觀察者到佈局。這應該返回正確的寬度和高度。在子視圖佈局完成之前調用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();
}
});
FYI:'removeGlobalOnLayoutListener'在新的API過時,它是'removeOnGlobalLayoutListener'現在。欲瞭解更多信息:http://stackoverflow.com/a/16190337/487940 – harsimranb