4
A
回答
17
肯定比看起來應該更復雜。與建議問題中的答案相比,我發現的更簡單的方法是使用ViewTreeObserver。在您的onCreate()方法,你可以使用一些代碼如下所示:
TextView textView = (TextView)findViewById(R.id.my_textview);
ViewTreeObserver observer = textView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//in here, place the code that requires you to know the dimensions.
//this will be called as the layout is finished, prior to displaying.
}
}
+0
適合我 - 謝謝。唯一需要注意的是,您需要注意一次(或僅在需要時)進入事件的事實 - 否則,您將最終進入無盡的佈局循環。 – 2010-12-21 19:56:40
2
只是一個額外的修正上述回答,如果你需要在視圖中執行任何操作多個部件的尺寸。在佈局完成時,將爲每個視圖調用佈局偵聽器。直到根視圖組件(即子元素生成佈局事件,然後父元素生成其佈局事件)爲止,這是遞歸的。這意味着您可以簡單地掛接根視圖組件的佈局事件,以便在任何視圖的佈局更改時得到通知。
ViewTreeObserver observer = this.findViewById(android.R.id.content).getViewTreeObserver();
現在你可以指望所有的意見將在onGlobalLayout設置寬度和高度值,因爲他們都進行了佈局。對於需要暴露實際維度的每個視圖創建許多偵聽器(顯然,除非您必須具有哪個視圖生成事件的範圍,而這通常不是必需的),這顯然更適合於創建多個偵聽器。
相關問題
- 1. Powerbuilder獲取statictext的實際高度
- 2. 獲取實際圖表的位置,寬度和高度
- 3. 用JavaScript獲取手機實際高度
- 4. 獲取實際屏幕高度(android)
- 5. 獲取旋轉超級視圖後的實際角度
- 6. 如何獲得圖像的實際寬度和高度
- 7. 獲取實際角度postrotate
- 8. 如何獲得自動高度的標籤的實際高度
- 9. 獲取視圖的可見高度
- 10. Android獲取網頁視圖的高度
- 11. 如何獲取拖放事件後的實際圖像寬度和高度
- 12. 實際視圖的高度不適合正確的內容
- 13. ListView的高度(實際)
- 14. 表格的實際高度
- 15. 如何獲得實際屏幕高度?
- 16. 使用jquery獲取元素的可見高度而不是其實際高度
- 17. 如何獲取SVG文本的實際高度(不是邊界框高度)
- 18. Phonegap:如何獲得捕獲視頻的實際寬度和高度
- 19. Gridview根據滾動視圖內的實際高度顯示
- 20. 獲取設置爲「自動」的對象的實際高度
- 21. 使用jquery獲取部分隱藏div的實際高度
- 22. 獲取內容的實際高度在Silverlight彈出控制
- 23. 獲取縮放轉換元件的實際高度
- 24. 如何在渲染前獲取網格行的實際高度
- 25. Android(Xamarin)獲取視圖高度
- 26. KineticJS實際文本高度
- 27. 獲取實際的窗口寬度android
- 28. 獲取超網格的實際寬度
- 29. 獲取元素的實際寬度?
- 30. 如何確定iOS上的實際視口寬度和高度
這可能是這太問題的重複:http://stackoverflow.com/questions/2864331/how-to-get-an-android-widgets-size-after-layout-is-calculated – 2010-12-21 17:04:05
謝謝 - 我的搜索fu已經離開過節。我將首先嚐試下面的答案,但有很多選擇。 – 2010-12-21 18:22:39