2017-01-27 33 views
0

EditTextのテキストの一部(通常はキャレットが置かれている単語)を別の単語に置き換え、自動修正をスキップすることができます(追加された単語が訂正されないことを確認してください) )?置き換え中にEditTextを自動で無効にする

EditText.getText().replace()メソッドを使用してもうまく動作する「名前の言及」システムを実行していますが、ユーザーがスペースを押したときに置き換えられるテキストが自動的に修正されるデバイスもあります(デフォルトキーボードのGalaxy S3など)。

私は残りのEditTextの自動修正を維持したいが、置き換えたい部分に対して無効にしたいと思う。

答えて

0

あなたはこのように、入力タイプを変更してみてくださいすることができます

editText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); 
+0

感謝。現在のinputTypeを保存し、単語を置き換え(そしてスペースを追加する)、単語が変更されたときにinputTypeを戻してから、その選択を単語の最後に設定することがトリックでした。今すぐそれを行うには良い方法がないように見える= /( "NoAutoCorrectSpannable"のようなものを愛していただろう)。 – mVck

0

私はInputMethodManager.html#restartInput(android.view.View)を使用して成功を収めていました:このように、戻ってそれを変更、

editText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

そして、彼のプレススペースの後に置き換えを実行した後にテキストビューに表示されます。私はそれをギャラクシーS8のサムスンのキーボードで動作するようにテストしました。

あなたはときにそのようなアプリケーションはTextView.setTextを呼び出したときのように、通常の入力方法やキー入力の流れの外にあなたのビューの変更、(内のテキスト、これを呼び出す必要があります:​​を引用するには、この問題のために設計されたようです)。

その使用例:答えを

editText.replace(0, 10, "foo"); 
InputMethodManager imm = (InputMethodManager) 
    context.getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.restartInput(editText); 
関連する問題