簡體   English   中英

如何知道用戶何時完成了 EditText 控件上的文本輸入?

[英]How to know when the user is done with text entry on an EditText control?

我希望能夠知道用戶何時完成在 EditText 控件中輸入文本。 我想也許最好知道鍵盤何時關閉或類似的東西。 這是在 Android 應用程序上使用 Kotlin。 我不知道為什么很難找到這樣的基本答案。 也許我在搜索錯誤的問題(Android 開發新手)。

使用鍵盤關閉作為用戶完成輸入文本的指示器是一個壞主意(用戶可能會再次打開鍵盤以輸入更多文本)。 更好的解決方案是明確要求用戶表明他已完成輸入數據。

您可以使用“提交”按鈕。

您還可以將EditTextandroid:imeOptions設置為actionDone並在EditText上設置一個偵聽器。

editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
    if (actionId == EditorInfo.IME_ACTION_DONE) {
       //do your stuff
       return true;
    }
    return false;
    } 
});

更新- 假設鍵盤關閉,因為指示器不好,原因有幾個,

  1. 沒有“正確”的方法來監控軟鍵盤。 您可以嘗試聆聽EditText的焦點,或者您可以使用高度差來猜測軟鍵盤是打開還是關閉(大多數鍵盤偵聽器庫中使用的選項)。 但這些並不可靠,可能會在生產中中斷。
  2. 這是用戶的“意外”應用程序行為。 例如,可以通過按后退按鈕來移除鍵盤。 通常,如果按下后退按鈕,用戶會期望操作不會繼續。 但是如果你關閉鍵盤聽,那么它最終會導致較差的用戶體驗。
  3. 沒有實際原因為什么要使用鍵盤關閉作為觸發器。 如果您想在用戶鍵入時執行操作,那么您應該使用TextWatcher ,否則堅持使用明確的確認選項。

使用 onFocusChangeListener 了解用戶是否已完成添加文本並離開 textInput 焦點。 例子

editText?.onFocusChangeListener =
        View.OnFocusChangeListener { _,
                                     hasFocus ->
            if (!hasFocus) {
                // code to execute when EditText loses focus
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM