當從視圖獲取座標或大小時,我有點困惑。有時,當我使用佈局參數使用WRAP_CONTENT,並試圖通過佈局參數檢索寬度時,我將獲得WRAP_CONTENT的CONSTANT值,以及getWidth(),getHeight(),getX(),getY(),getLeft ()或類似於獲取大小和座標的任何方法都不起作用。使用換行內容時獲取寬度和高度
我怎樣才能達到這樣的情況,包裝內容後,我將能夠檢索視圖本身的實際價值。
有人可以幫助我這個。謝謝。
當從視圖獲取座標或大小時,我有點困惑。有時,當我使用佈局參數使用WRAP_CONTENT,並試圖通過佈局參數檢索寬度時,我將獲得WRAP_CONTENT的CONSTANT值,以及getWidth(),getHeight(),getX(),getY(),getLeft ()或類似於獲取大小和座標的任何方法都不起作用。使用換行內容時獲取寬度和高度
我怎樣才能達到這樣的情況,包裝內容後,我將能夠檢索視圖本身的實際價值。
有人可以幫助我這個。謝謝。
您應該使用getMeasuredWidth()
和getMeasuredHeight()
int wrapSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
view.measure(wrapSpec, wrapSpec);
後view.getMeasuredWidth()
和view.getMeasuredHeight()
應返回有效的寬度和高度。
//更新:我是一個白癡,未來是一種更好的方法
總是得到0。任何解決方案 – Ram
@Ram你必須在視圖佈局後調用它。例如,在onCreate()中調用此函數將不起作用,因爲尺寸尚未測量。你可以設置一個回調,以知道你的視圖何時已經佈置,如果你需要: yourView.getViewTreeObserver()。addOnGlobalLayoutListener(...) – Xebozone