如何在顯示視圖之前找到視圖的寬度?我不想添加自定義視圖並在OnChanged()中點擊尺寸。如何在視圖顯示之前找到視圖的寬度?
回答
Display display = getWindowManager().getDefaultDisplay();
View view = findViewById(R.id.YOUR_VIEW_ID);
view.measure(display.getWidth(), display.getHeight());
view.getMeasuredWidth(); // view width
view.getMeasuredHeight(); //view height
請標記爲已解決^^ –
您可能還要記住,如果視圖沒有被充氣,它的寬度和高度將會是0. – Joru
您是對的Joru。我使用ViewTreeObserver並解決了我的問題。感謝所有試圖回答的人。 –
@dmytrodanylyk - 我認爲它會返回寬度&高度爲0,所以你需要使用下面的事情
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View contentview = inflater.inflate(R.layout.YOURLAYOUTNAME, null, false);
contentview.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int width = contentview.getMeasuredWidth();
int height = contentview.getMeasuredHeight();
它會給你正確的高度&寬度。
這就是我需要確定是否應該開始一個新的複選框,首先使它成爲一個單一的行,然後通過計算寬度來防止溢出...完美謝謝。來自 - > http://stackoverflow.com/a/24054428/1815624 – CrandellWS
您應該使用OnGlobalLayoutListener
,它被視爲在視圖上進行了更改,但在繪製之前進行了更改。
costumView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
costumView.getWidth();
}
});
我喜歡使用這種技術,因爲每my answer on a related question:
郵政從onCreate()
可運行視圖已經被創建時將被執行:
contentView = findViewById(android.R.id.content);
contentView.post(new Runnable()
{
public void run()
{
contentHeight = contentView.getHeight();
}
});
該代碼將在運行主要UI線程,在onCreate()
完成後。
這是最好的方法......工作!
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (fondo_iconos_height==0) { // to ensure that this does not happen more than once
fondo_iconos.getLocationOnScreen(loc);
fondo_iconos_height = fondo_iconos.getHeight();
redraw_function();
}
}
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
view.measure(size.x, size.y);
int width = view.getMeasuredWidth();
int height = view.getMeasuredHeight();
yourView.measure(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
int yourView= m_hidableRowContainer.getMeasuredHeight();
就是這樣。
'measure'需要一對'View.MeasureSpec'整型常量,而不是佈局參數常量。 – Tom
- 1. 如何在添加到子視圖之前獲取UIView的寬度和高度?
- 2. 如何在每次顯示視圖之前更新iPhone中的視圖?
- 3. 如何設置視圖的寬度等於任何顯示?
- 4. 在顯示它之前計算視圖度量
- 5. AngularJS視圖在顯示視圖之間切換前的新數據之前快速顯示舊數據
- 6. Android佈局:兩個固定寬度視圖之間的可變寬度視圖
- 7. 第一次顯示之前獲取視圖寬度/高度或字體寬度/高度/其他尺寸
- 8. iPhone,我如何顯示正常視圖頂部的小視圖並在當前正常視圖之間切換?
- 9. 如何顯示從表視圖到地圖視圖的註釋?
- 10. 如何顯示在視圖
- 11. 如何在Tabbar控制器之前顯示登錄視圖?
- 12. CakePHP 1.3如何在顯示內容之前渲染視圖
- 13. 如何在顯示mvc視圖之前「預處理」ajax調用?
- 14. 在顯示您之前顯示視圖UITabBar
- 15. 如何在顯示圖庫視圖之前從SD卡調整圖像大小?
- 16. 在顯示GLkit視圖之前添加一些視圖 - 從UIview導航到GLkit視圖
- 17. 將視圖寬度設置爲組的視圖視圖
- 18. 顯示視圖>顯示視圖
- 19. 如何在圖庫視圖中顯示視頻,如圖像?
- 20. 如何在顯示到任何視圖或窗口之前通知alertview?
- 21. 獲取視圖高度和視圖寬度之間的最小值
- 22. 如何在播放視頻之前顯示進度條
- 23. MVVM - 如何顯示視圖?
- 24. 如何在繪製之前正確測量視圖的高度
- 25. 子視圖在其超級視圖之外顯示
- 26. 的視圖顯示訪問詳細信息視圖綁定數據之前
- 27. 如何隱藏在網頁視圖前根據用戶輸入顯示視圖
- 28. UITableView標題視圖寬度
- 29. 如何在單元格在桌面視圖中顯示視圖
- 30. 如何在執行計算任務之前將視圖添加到視圖中
你到底想要什麼?描述更多 –