2011-05-31 61 views
3

我有一個未知數量的TextView元素一些EditText元素等等,它們都放置在一個線性佈局中......我想在運行時計算佈局的高度,所以我可以獲得不同分辨率屏幕的準確大小(像素)。一些編輯框可以包含更多的文本,然後包含更多的文本,因此它們的尺寸會更大...... 有沒有可能在運行時計算佈局的大小?動態計算視圖元素的大小

感謝

回答

3

爲了獲得佈局的高度,您必須在onWindowFocusChanged()方法中編寫代碼。 首先得到onCreate()方法中的佈局然後寫下面的代碼。

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    System.out.println("...111Height..."+mainLayout.getMeasuredHeight()); 
} 

感謝 迪帕克

+0

tnx,不只是在onWindowFocusChanged有可能在其他地方像onclicklisteners獲得佈局的大小。 – Lukap 2011-05-31 15:02:41

+0

不應該依靠焦點來獲取元素的大小。只要要求測量大小的代碼在測量後出現,應該沒問題。 – Ameen 2013-04-16 20:34:41

0

您可以通過給獲得視圖的當前寬度:

String s = tv.getText().toString(); //tv is my textview name 
float currentWidth = tv.getPaint().measureText(s); 

拿到手機的密度,給:

float phoneDensity = this.getResources().getDisplayMetrics().density; 

當你currentWidth * phoneDensity你得到的寬度根據您的設備。

+0

由於這是非常酷的解決方案。不幸的是,這隻能解決我的一部分問題。我需要整個視圖的大小,包括邊距,填充等等。 。 。我不知道是否有解決方案,爲什麼我問:) – Lukap 2011-05-31 12:40:19