2011-12-02 25 views
21

我正在嘗試使用軟鍵編輯時具有以下特徵的EditText。我準備好了文檔,在這裏搜索,使用參數播放,但找不到工作配置。帶有單行文本行,換行和完成操作的EditText?

  1. 屏幕上的EditView視圖有幾行高度(例如3-4)。
  2. 內容文本是一行(即沒有換行符)。
  3. 如果內容文本比視圖的寬度長,它應該換行到下一行
  4. 軟鍵的Enter鍵顯示完成操作標籤。

我可以達到{1,2,3}和{1,2,4},但不能達到{1,2,3,4}。我的理由是,由於內容是單行(不換行),因此不使用Enter鍵,因此應該可以將其更改爲完成標籤。

我的設置代碼如下所示

editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE); 
editText.setHorizontallyScrolling(false); 
editText.setSingleLine(false); 
// This does not work. Soft keyboard has Enter action. 
editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 

這可能嗎?任何建議?

+0

任何人至少可以證實這不能做到? – user1076637

+0

對[此問題] [1]的答案中概述的換行。 [1]:http://stackoverflow.com/questions/3276380/android-word-wrap-edittext-text –

+0

感謝T.是的,這確實包裹,但如何我得到它一起工作需要#4以上? – user1076637

回答

32

這種組合(和EditText方法調用的具體順序)應該產生所需的配置:

editText.setInputType(
    InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 
    editText.setSingleLine(true); 
    editText.setLines(4); // desired number of lines 
    editText.setHorizontallyScrolling(false); 
    editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
+0

真棒!虛擬擁抱你:) –

+1

動態改變高度使用setMaxLines代替 – user2798694

+0

Thx爲正確答案,正如其他人告訴EditText在設置屬性時隱藏隱式契約,所以操作順序很重要。爲了實現從單行EditText開始並比直到最後一行自動換行直到取得maxLines,只需替換: editText.setLines(4); 與: editText.setMaxLines(maxLines = 5); – xyman

6

只是在你的活動添加

editText.setHorizontallyScrolling(false); 
editText.setMaxLines(Integer.MAX_VALUE); 

與你的EditText實例編程。

它配置EditText實例,以便用戶編輯一個單行字符串,該字符串在使用IME選項的多行上軟包裝顯示。

+1

要明確,您不能在佈局XML中設置這些值 - 它們將被忽略。就像OP說的那樣通過編程來設置它們。 – Evan