2012-05-18 7 views
9

Ich verwende die android.text.TextWatcher Schnittstelle, um Änderungen an einem EditText in einer meiner Apps zu hören. Ich überwache die Änderungen, um Rückgängig-Optionen zu ermöglichen, indem ich beforeTextChanged() und onTextChanged() verwende. NormalerweiseRechtschreibvorschläge geben redundante Werte mit android.text.TextWatcher

, geschehen Änderungen ein Zeichen in einer Zeit, zum Beispiel, wenn der Benutzer „Hallo“, ich werde die folgenden Werte für den Start erhalten, nach und Zählwerte des beforeTextChanged() -Methode:

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' 

nun auf ICS/Samsung Galaxy Nexus, mit den Rechtschreibvorschlägen aktiv, wenn ich den gleichen Text eingeben, das Wort in der EditText unterstrichen wird, bis füge ich einen Raum, und ich bekomme folgende Ergebnisse:

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' 

Gemäß der Dokumentation, letzteres Verhalten i s gesehen als "der Benutzer eingegeben ein 1-Buchstaben-Wort, dann löschte es und tippte ein 2-Buchstaben-Wörter, dann löschte es und tippte ein 3-Buchstaben-Wort, und so weiter ...". Und wenn ich den EditText rückgängig mache, bekomme ich "Hallo", "", "Hölle", "", "Hel", "", "er", "", "h", wo ich nur haben will " Hallo", "".

Gibt es eine Möglichkeit zu verhindern, dass die Rechtschreibvorschläge diese Werte angeben. IMHO, das bricht den in der Methodendokumentation gegebenen Vertrag.

Wenn nicht, gibt es eine Möglichkeit, den Vorschlag auf meinem Text zu verhindern?

Antwort

5

können Sie Vorschläge verhindern leicht genug:

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

Ich bin sicher, dies mit allen ICS-Geräte gut funktionieren würde. Ich glaube, dass dieses Feld auf älteren Geräten nicht verfügbar ist, aber unter den Umständen sollte das kein Problem sein.

+0

Oder programmgesteuert: editText.setInputType (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); –