私はandroid.text.TextWatcherインターフェイスを使用して、アプリの 1 つで EditText の変更をリッスンしています。beforeTextChanged() と onTextChanged() を使用して、元に戻すオプションを許可するように変更を監視します。
通常、変更は一度に 1 文字ずつ行われます。たとえば、ユーザーが「hello」と入力した場合、beforeTextChanged() メソッドの開始値、アフター値、およびカウント値に対して次の値が取得されます。
start = 0; count = 0; after = 1; // typed 'h'
start = 1; count = 0; after = 1; // typed 'e'
start = 2; count = 0; after = 1; // typed 'l'
start = 3; count = 0; after = 1; // typed 'l'
start = 4; count = 0; after = 1; // typed 'o'
現在、ICS/Samsung Galaxy Nexus では、スペル候補がアクティブになっているため、同じテキストを入力すると、スペースを挿入するまで EditText で単語に下線が引かれ、次の結果が得られます。
start = 0; count = 0; after = 1; // typed 'h'
start = 0; count = 1; after = 2; // typed 'e'
start = 0; count = 2; after = 3; // typed 'l'
start = 0; count = 3; after = 4; // typed 'l'
start = 0; count = 4; after = 5; // typed 'o'
ドキュメントによると、後者の動作は、「ユーザーが 1 文字の単語を入力し、それを消去して 2 文字の単語を入力し、それを消去して 3 文字の単語を入力した...」と見なされます。EditText で取り消しを実行すると、"hello"、""、"hell"、""、"hel"、""、"he"、""、"h" が表示されます。こんにちは"、 ""。
これらの値を与えるためのスペルの提案を防ぐ方法はありますか? 私見、これはメソッドのドキュメントに記載されている契約を破ります。
そうでない場合、編集テキストの提案を防ぐ方法はありますか?