我有一個未知數量的TextView元素一些EditText元素等等,它們都放置在一個線性佈局中......我想在運行時計算佈局的高度,所以我可以獲得不同分辨率屏幕的準確大小(像素)。一些編輯框可以包含更多的文本,然後包含更多的文本,因此它們的尺寸會更大...... 有沒有可能在運行時計算佈局的大小?動態計算視圖元素的大小
感謝
我有一個未知數量的TextView元素一些EditText元素等等,它們都放置在一個線性佈局中......我想在運行時計算佈局的高度,所以我可以獲得不同分辨率屏幕的準確大小(像素)。一些編輯框可以包含更多的文本,然後包含更多的文本,因此它們的尺寸會更大...... 有沒有可能在運行時計算佈局的大小?動態計算視圖元素的大小
感謝
爲了獲得佈局的高度,您必須在onWindowFocusChanged()方法中編寫代碼。 首先得到onCreate()
方法中的佈局然後寫下面的代碼。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
System.out.println("...111Height..."+mainLayout.getMeasuredHeight());
}
感謝 迪帕克
您可以通過給獲得視圖的當前寬度:
String s = tv.getText().toString(); //tv is my textview name
float currentWidth = tv.getPaint().measureText(s);
拿到手機的密度,給:
float phoneDensity = this.getResources().getDisplayMetrics().density;
當你currentWidth * phoneDensity
你得到的寬度根據您的設備。
由於這是非常酷的解決方案。不幸的是,這隻能解決我的一部分問題。我需要整個視圖的大小,包括邊距,填充等等。 。 。我不知道是否有解決方案,爲什麼我問:) – Lukap 2011-05-31 12:40:19
tnx,不只是在onWindowFocusChanged有可能在其他地方像onclicklisteners獲得佈局的大小。 – Lukap 2011-05-31 15:02:41
不應該依靠焦點來獲取元素的大小。只要要求測量大小的代碼在測量後出現,應該沒問題。 – Ameen 2013-04-16 20:34:41