Verhalten von imeOptions, imeActionId und imeActionLabel
Ich bin ein Neuling in der nativen Android-Entwicklung und versuche herauszufinden, wie die IME-Aktionsschaltflächen angepasst werden können. Ich habe mir die Google-Dokumentation angesehen, kann aber nur sehr wenige Informationen zum erwarteten Verhalten finden.
Von demoffizieller Führer Ich verstehe, dass die Aktionsschaltfläche der Tastatur mit den folgenden Attributen konfiguriert werden kann:
android: imeOptions kann den Text / die ID der Schaltfläche, die in der Nähe der Leertaste angezeigt wird, auf einige vordefinierte Werte einstellen (z. B. actionGo setzt die Tastenbeschriftung aufGehen und die id zu 2)android: imeActionLabel Legen Sie die Beschriftung der Schaltfläche fest, die im Eingabebereich angezeigt wird, wenn die Tastatur im Vollbildmodus (normalerweise im Querformat) angezeigt wird. Kann auf einen beliebigen String-Wert gesetzt werden.android: imeActionId Wie zuvor, aber die an die Rückrufmethode übergebene numerische ID festlegenNach einigen empirischen Versuchen habe ich jedoch ein unterschiedliches Verhalten zwischen API-Level 15 und den nächsten API-Levels festgestellt.
Ich habe ein einfaches EditText-Element mit den folgenden Attributen eingerichtet:
<EditText
...
android:imeOptions="actionGo"
android:imeActionLabel="Custom"
android:imeActionId="666"
android:inputType="text"/>
und ich habe den Effekt mit den verschiedenen API-Levels sowohl im Hoch- als auch im Querformat überprüft. Hier ist das Ergebnis.
API Level 15 - 4.0.3
Im Hochformat lautet die TastenbeschriftungGehen und die an die Rückrufmethode übergebene Aktions-ID ist 2, entsprechend der Einstellung von imeOptions.
Im Querformat lautet die Schlüsselbezeichnung / IDGehen/ 2 als Hochformat, während die im Eingabebereich angezeigte Schaltfläche istBrauch/ 666, entsprechend den Attributen imeActionLabel und imeActionId.
API Level 16, 17 und 18 - 4.1.2, 4.2.2 und 4.3
Sowohl im Hoch- als auch im Querformat werden die Taste und die Schaltfläche mit angezeigtBrauch label und sind an 666 id gebunden, wobei das imeOptions-Attribut ignoriert wird.
Diese Abweichung im Verhalten ist ziemlich ärgerlich, weil:
Mit API-Level> = 16 können Sie nicht zwischen Key-Button und Input-Area-Button unterscheidenMit API-Level = 15 können Sie keinen benutzerdefinierten Text für die Taste festlegen.Wissen Sie, wie Sie dies in API 15 und 16+ erreichen können? Oder gibt es eine Möglichkeit, ein konsistentes Verhalten für alle (oder zumindest einen Teil) der API-Versionen zu erzielen?
Vielleicht fehlt mir etwas in den IME-Einstellungen, das das unterschiedliche Verhalten rechtfertigen kann ...
Vielen Dank!