2011-01-06 4 views
28

Meine Frage ist: Wie kann ich die Anzeige der Aktionstaste der Soft-Tastatur im laufenden Betrieb aktualisieren?Wie kann ich die Anzeige der Aktionsschaltfläche des Editors im laufenden Betrieb aktualisieren?

Ein weiterer Beitrag scheint die Editoraktion zu ändern, BEVOR die Tastatur angezeigt wird: Android: Can't figure how to use setImeActionLabel. Ich möchte die Softkey-Taste während der Anzeige ändern.

Ich habe teilweise erfolgreich: - Ich kann die Aktion ändern mit: editText.setImeOptions (EditorInfo.IME_ACTION_GO); - Ich kann die Tastatur auch neu zeichnen mit: InputMethodManager.restartInput (editText); Ich mache dies mit TextWatcher.afterTextChanged. - Ich habe jedoch ein Problem damit. Wenn ich eine Taste drücke, zeigt die Tastatur an, welche Taste gedrückt wurde. Aber wenn ich restartInput (...) aufrufe, blendet dies auch die Ansicht aus, die anzeigt, welche Taste gedrückt wurde. Das scheint mir ein normales Verhalten zu sein, aber ich brauche einen Weg darum.

Erweitern Sie EditText und überschreiben onKeyUp ist keine gute Idee, siehe: https://groups.google.com/forum/?fromgroups#!topic/android-developers/RIxGfx5qOjM.

Die KeyboardView-Klasse hat genau das, was ich brauche (invalidateKey), aber ich denke, das ist nur zugänglich, wenn Sie Ihre eigene Eingabemethode erstellen.

Hat sonst noch jemand bessere Ideen?

+0

Das Invalidieren der Ansicht selbst hat nicht funktioniert? –

Antwort

1

Bitte versuchen Sie es genauer zu sein, wenn Sie beschreiben, was Sie tun wollen ... ich oft Ihr Beitrag lesen benötigt, um zu verstehen, Ihre Anfrage ..

Also, was Sie tun wollen, ist wie man auf irgendeine auf der Tastatur gedrückte Taste reagiert und Informationen darüber in der Aktionstaste auf der Tastatur anzeigt. Wenn das nicht Ihr Ziel ist, um mehr zu erklären ...

Wenn ja, so denke ich, dass Sie additionalL EditText (nicht sichtbar) verwenden müssen, können Sie et0 aufrufen. Nachdem Sie einen Buchstaben oder ein beliebiges Muster, das Sie in Ihrem Bearbeitungstext definiert haben, eingefügt haben, ändern Sie den Fokus auf et0 .. so können Sie den actionKey ändern und den Fokus zurück an Ihren editText senden. oder irgendeine Art, diesen vorübergehenden Fokuswechsel in und von et0 zu verwalten. Hier ist es nicht notwendig, die Eingabe neu zu starten.

Hoffnung, die Ihnen helfen ..

1

Haben Sie versucht, zu ändern /system/usr/keychars/default.kcm on-the-fly, bevor Sie Ihren Neuaufbau Code aufrufen? (Der Dateiname kann je nach Version von Android unterschiedlich sein).

Dort können Sie nicht nur die Schlüsselausgabezeichen, sondern auch die Schlüsselanzeigewerte einstellen. Ich habe es nicht ausprobiert, es könnte auch eine Verzögerung bedeuten, aber es ist einen Versuch wert.

0

Dies sollte für Sie sehr nützlich sein.

EditText in = new EditText(this); 
in.addTextChangedListener(new TextWatcher() { 
    public void onTextChanged(CharSequence cs, int s, int b, int c) { 
     Log.i("Key:", cs.toString()); 
    } 
    public void afterTextChanged(Editable editable) {} 
    public void beforeTextChanged(CharSequence cs, int i, int j, int k) {} 
}); 
+0

Bitte verwenden Sie das nächste Mal das Tag für den Buchungscode. – Flawyte

+0

Willkommen bei SO, hier ist es eine gute Übung zu erklären, warum Sie Ihre Lösung verwenden sollten und nicht nur wie. Das wird Ihre Antwort wertvoller machen und dem Leser helfen, besser zu verstehen, wie Sie es tun. Ich schlage auch vor, dass Sie einen Blick auf unsere FAQ werfen: http://stackoverflow.com/faq. – ForceMagic

Verwandte Themen