2012-12-20 29 views
1

我想根據EditText的高度做些什麼。 我如何知道EditText的高度? 我的代碼如下所示。如何知道EditText的高度?

<EditText 
    android:id="@+id/edit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:singleLine="true"  
/> 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout); 
    EditText edit = (EditText) findViewById(R.id.edit); 
    edit.setTextSize(20);  
    edit.setText("Hello, world"); 
    int height = edit.getHeight(); // this returns 0 
} 
+0

我錯過的setContentView。我添加了它。 – user1301568

回答

3

這是一個快速的答案:請谷歌。

而且你可以試試這個:藏漢

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    EditText edit = (EditText) findViewById(R.id.edit); 
    edit.setTextSize(20);  
    edit.setText("Hello, world");  
    edit.measure(0, 0); 
    int height = edit.getMeasuredHeight(); 
} 
+1

是的,關於這個問題有很多答案,儘管大部分都是關於獲取「視圖」的高度和寬度。一般來說,在創建活動時,您無法獲得視圖的維度。您需要嘗試在構建視圖之後發生的類似onWindowFocusChanged的事情時獲取高度。不過,我對Sherif剛剛發佈的內容非常感興趣:) – leenephi

+0

@leenephi使用'getTreeObserver()。addOnGlobalLayoutListener'可能會更好。但是,我的答案有時候取決於我對提問者水平的判斷。但是,它仍然是關於要求的。例如,如果您需要將高度用於非常尷尬的事情,則最好不要等待整個佈局。 –

+1

嗯,是的,因爲有了它,你可以在準備就緒的時候獲得信息,對嗎?我想我只是從來不知道你可以在onCreate中獲得維度。到目前爲止,我讀過的所有內容都是關於稍後在Activity中選擇一些回調的,實際上,這是令人沮喪的,因爲我從來不知道哪個是最好的,有時它們是不工作XD所以謝謝! – leenephi