2013-07-01 43 views
0

Android 2.35 - 我有一個多行EditText屏幕上也有一個確定和取消按鈕。當用戶完成輸入文本時,他點擊確定按鈕,處理輸入的文本。這個「完成」按鈕從哪裏來?

當縱向模式下點擊編輯文本時,軟鍵盤出現在「確定」和「取消」按鈕下方,因此它不會遮掩它們。但在橫向模式下,軟鍵盤覆蓋了「確定」和「取消」按鈕,EditText右側出現了一個神祕的「完成」按鈕 - 這是灰色背景上的普通按鈕。點擊它會關閉鍵盤。

我的佈局中沒有定義這樣的按鈕!它從何而來?什麼決定了它的外觀,狀態和屬性?它的事件在哪裏處理?這是什麼叫,所以我可以讀更多關於它?

我嘗試添加

android:imeOptions="actionDone" 

我EDITTEXT給軟鍵盤完成按鈕,但沒有任何效果。我寧願在鍵盤上有一個「完成」按鈕,看起來像鍵盤的其餘部分,而不是這個奇怪的「完成」按鈕,它看起來不像或不適合屏幕上的其他任何東西。提前感謝任何信息。

+0

你沒做什麼 - 這是Android的手柄'EditText'在橫向模式下如何。在風景中,編輯文本發生在全屏幕,「完成」按鈕表示用戶正在編輯,現在可以返回到普通視圖。 – Nikhil

+0

那麼決定它的外觀呢?這是一種通用的灰色和通用系統字體,因此它不適用於我的佈局樣式或軟鍵盤。 – user316117

回答

2

在橫向模式下,大多數IME都進入全屏模式,因爲顯示屏通常太小而無法同時顯示鍵盤的有意義的部分和UI 。您可以請編輯不要設置標誌EditorInfo.IME_FLAG_NO_EXTRACT_UIEditorInfo.IME_FLAG_NO_FULLSCREEN。這可能工作與否。但是,仍然由您來測試儘可能多的設備,以確定它是否仍然是一個好用戶體驗 - 通常情況並非如此。

+0

很好的解釋。另外 - 全屏編輯UI存在的原因是在手機的橫向模式下,放置軟鍵盤後通常只剩下很小的空間,導致用戶界面無法使用。這就是爲什麼Android在手機上創建它並默認使用它的原因。這也是爲什麼它通常不是平板電腦的默認設置 - 更大的屏幕意味着它不是必需的。 –

+0

@他 - 謝謝。那麼決定它的外觀呢?這是一種通用的灰色和通用系統字體,因此它不適用於我的佈局樣式或軟鍵盤。我如何設計它?另外,這個叫什麼,所以我可以在Android文檔中查看它? – user316117

1

試試這個

edittext.setOnEditorActionListener(new DoneOnEditorActionListener()); 

,並使用這個類

class DoneOnEditorActionListener implements OnEditorActionListener { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_DONE) { 
       InputMethodManager imm = (InputMethodManager) v.getContext() 
         .getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(v.getWindowToken(), 0); 
       return true; 
      } 
      return false; 
     } 
    }