10

私は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" が表示されます。こんにちは"、 ""。

これらの値を与えるためのスペルの提案を防ぐ方法はありますか? 私見、これはメソッドのドキュメントに記載されている契約を破ります。

そうでない場合、編集テキストの提案を防ぐ方法はありますか?

4

1 に答える 1

5

提案を簡単に防ぐことができます:

<EditText
    ...
    android:inputType="textNoSuggestions" />

これは、すべての ICS デバイスでうまく機能すると確信しています。そのフィールドは古いデバイスでは利用できないと思いますが、問題にならない状況下では.

于 2012-05-28T05:42:52.063 に答える