我有一個自定義視圖,其中包含一個將控件作爲視圖的子項添加的公共函數,並且我想從我的活動中調用它。問題是我需要知道函數中視圖的大小才能放置控件。我無法重寫onMeasure來獲取這些度量,因爲我的視圖繼承自其中此函數是最終的另一個自定義視圖。我嘗試覆蓋measureChildren,但它被調用得太晚(即使在放置視圖的活動的onResume之後)。在活動調用視圖中的函數之前,我能做些什麼才能獲得大小?在添加控件之前獲取窗口大小
1
A
回答
0
一種可能性是衡量你的觀點早在活動視圖,然後設置屬性爲它的內部方法使用。
使用全局佈局偵聽器對我來說一直效果不錯。它具有能夠在佈局改變時重新測量事物的優點,例如,如果某項設置爲View.GONE或子視圖被添加/刪除。
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// inflate your main layout here (use RelativeLayout or whatever your root ViewGroup type is
LinearLayout mainLayout = (LinearLayout) this.getLayoutInflater().inflate(R.layout.main, null);
// set a global layout listener which will be called when the layout pass is completed and the view is drawn
mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
// at this point, the UI is fully displayed
}
}
);
setContentView(mainLayout);
http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html
0
如果你想在像素的顯示尺寸可以使用的getSize:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
相關問題
- 1. 調整窗口大小窗口控件
- 2. 獲取窗口大小
- 3. 獲取Tkinter窗口大小
- 4. 如何在show()之前預覽窗口小部件的大小?
- 5. 在添加到body之前獲取div的大小
- 6. 在呈現之前獲取用戶控件的實際大小
- 7. 獲取WPF控件的當前大小
- 8. 在主窗口之前加載窗口
- 9. 在顯示之前獲取QScrollArea視口的大小
- 10. 基於窗口大小添加類jQuery
- 11. 如何在前景窗口獲取之前捕獲擊鍵?
- 12. WPF - 在調整窗口大小的控件調整大小
- 13. 在窗口中添加小部件
- 14. 可調整大小的窗口控件?
- 15. FancyBox 2 Ajax窗口大小控件
- 16. JavaScript獲取錯誤的窗口大小
- 17. AS3:獲取瀏覽器窗口大小?
- 18. 獲取OpenCV中窗口的大小
- 19. 獲取Silverlight窗口的大小
- 20. 如何使用Curses從調整大小的窗口獲取窗口大小?
- 21. 在通過HTTP下載文件之前獲取文件大小
- 22. 在android中下載文件之前獲取文件大小
- 23. 在python/kivy上獲取當前窗口小部件的id
- 24. 如何在WPF(彈出窗口)窗口可見之前調整其大小?
- 25. 在加載之前在打開的窗口中添加內容
- 26. 在WPF窗口中獲取當前關注的元素/控件
- 27. 調整窗口大小之前和之後的innerWidth/innerHeight?
- 28. 如何在視圖加載之前獲取按鈕大小?
- 29. jQuery/javascript - 在加載之前獲取圖像大小
- 30. 在加載圖像之前獲取圖像大小
我不知道,但我知道這個問題是關於特定視圖大小不只是顯示尺寸 – fgeorgiew