2011-08-25 105 views
1

當從視圖獲取座標或大小時,我有點困惑。有時,當我使用佈局參數使用WRAP_CONTENT,並試圖通過佈局參數檢索寬度時,我將獲得WRAP_CONTENT的CONSTANT值,以及getWidth(),getHeight(),getX(),getY(),getLeft ()或類似於獲取大小和座標的任何方法都不起作用。使用換行內容時獲取寬度和高度

我怎樣才能達到這樣的情況,包裝內容後,我將能夠檢索視圖本身的實際價值。

有人可以幫助我這個。謝謝。

回答

2

您應該使用getMeasuredWidth()getMeasuredHeight()

+1

總是得到0。任何解決方案 – Ram

+1

@Ram你必須在視圖佈局後調用它。例如,在onCreate()中調用此函數將不起作用,因爲尺寸尚未測量。你可以設置一個回調,以知道你的視圖何時已經佈置,如果你需要: yourView.getViewTreeObserver()。addOnGlobalLayoutListener(...) – Xebozone

1
int wrapSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); 
view.measure(wrapSpec, wrapSpec); 

view.getMeasuredWidth()view.getMeasuredHeight()應返回有效的寬度和高度。

//更新:我是一個白癡,未來是一種更好的方法