Gibt es eine Möglichkeit, ein Multi-Line- EditText
Gerät zu haben und das IME-Aktionslabel "Done" unter Android 2.3 zu verwenden?
In Android 2.2 ist dies kein Problem. Die Eingabetaste zeigt die IME-Aktionsbezeichnung "Fertig" ( android:imeActionLabel="actionDone"
) an und schließt die Soft-Eingabe, wenn Sie darauf klicken.
Bei der Konfiguration eines EditText
für mehrere Zeilen entfernt entfernt Android 2.3 die Möglichkeit, die Aktion "Fertig" für die Soft Input-Tastatur anzuzeigen.
Ich habe es geschafft, das Verhalten der Soft Input-Eingabetaste mit einem zu ändern KeyListener
, aber die Eingabetaste sieht immer noch wie eine Eingabetaste aus.
Hier ist die Erklärung der EditText
<EditText
android:id="@+id/Comment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="0dp"
android:lines="3"
android:maxLines="3"
android:minLines="3"
android:maxLength="60"
android:scrollHorizontally="false"
android:hint="hint"
android:gravity="top|left"
android:textColor="#888"
android:textSize="14dp"
/>
<!-- android:inputType="text" will kill the multiline on 2.3! -->
<!-- android:imeOptions="actionDone" switches to a "t9" like soft input -->
Wenn ich den inputType
Wert nach dem Laden überprüfe und die Inhaltsansicht in der Aktivität einstelle, wird Folgendes angezeigt:
inputType = 0x20001
Welches ist:
- Klasse =
TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_NORMAL
- flags =
InputType.TYPE_TEXT_FLAG_MULTI_LINE
quelle
EditText
, sodass es nicht in meiner Aktivitäts-XML enthalten ist. Ich habe versucht, diesen Code in meine Aktivität einzufügen, habe aber eine Fehlermeldung erhalten :The method onCreateInputConnection(EditorInfo) of type SMSMain must override or implement a supertype method
. Sie rufensuper
am Anfang an, sind sich also nicht sicher, wo das Problem liegt. Sie haben Vorschläge? Vielen Dank.Ohhorobs Antwort ist im Grunde richtig, aber sein Code ist wirklich wirklich überflüssig! Es entspricht im Grunde dieser viel einfacheren Version (vollständiger Code für faule Leser):
Beachten Sie, dass einige
inputType
Optionen wietextShortMessage
dies nicht funktionieren! Ich schlage vor, Sie beginnen mitinputType="text"
. So können Sie es in Ihrem XML verwenden.quelle
Eine alternative Lösung zur Unterklasse der EditText-Klasse besteht darin, Ihre EditText-Instanz folgendermaßen zu konfigurieren:
Zumindest funktioniert das bei mir unter Android 4.0. Es konfiguriert die EditText-Instanz so, dass der Benutzer eine einzeilige Zeichenfolge bearbeitet, die mit Soft-Wrapping in mehreren Zeilen angezeigt wird, selbst wenn eine IME-Aktion festgelegt ist.
quelle
Nach vorheriger Antwort
Verwenden Sie dies wie
quelle
Für die Aktion Fertig können Sie Folgendes verwenden:
XML
JAVA
Ich hoffe, es funktioniert für Sie.
quelle
Anscheinend lautet die Antwort auf die ursprüngliche Frage Ja, aber ich glaube, das Android-Team versucht, Entwickler dazu zu bringen, ein wenig darüber nachzudenken, wie sie den mehrzeiligen EditText verwenden. Sie möchten, dass die Eingabetaste Zeilenumbrüche hinzufügt, und erwarten wahrscheinlich, dass Sie eine Schaltfläche oder ein anderes Eingabemittel bereitstellen, um das Ereignis auszulösen, mit dem Sie fertig sind.
Ich habe das gleiche Problem und meine offensichtliche Lösung bestand darin, einfach eine Schaltfläche "Fertig" hinzuzufügen und die Eingabetaste die Zeilenumbrüche hinzufügen zu lassen.
quelle
Verwenden Sie dieses Attribut in Ihrem XML.
quelle