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 festlegen

Nach 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!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage