2017-01-27 16 views
0

是否可以用另一個單詞替換EditText的部分文本(通常是脫字符所在的單詞)並跳過自動更正(並確保添加的單詞不會被更正)?在做替換時禁用EditText自動更正

我正在使用EditText.getText().replace()方法做一個「名稱提及」系統,但在某些設備上(即使用默認鍵盤的Galaxy S3),我替換的文本在用戶按下空間時會自動更正。

我想保留自動爲EditText的其餘部分保持正確,但想要爲我替換的部分禁用它。

回答

0

你可以嘗試改變輸入類型,像這樣:

editText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

他按空格鍵後,改回來,這樣的:

editText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); 
+0

感謝您的回答。保存當前的inputType,替換單詞(並添加一個空格),當單詞更改後放回inputType,然後將單詞設置爲該單詞的末尾。看起來好像現在沒有更好的方法= /(會喜歡「NoAutoCorrectSpannable」)。 – mVck

0

我已經有成功使用InputMethodManager.html#restartInput(android.view.View)在執行替換後的文本視圖上。我測試過它在Galaxy S8上的三星鍵盤上工作。引述​​,似乎專爲這個問題:

你應該把這個當正常輸入法或鍵盤輸入流,外面的景色變化中的文本,如當應用程序調用TextView.setText( )。

使用它的一個例子:

editText.replace(0, 10, "foo"); 
InputMethodManager imm = (InputMethodManager) 
    context.getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.restartInput(editText);