Ich habe mich gefragt, wie man eine Live-Zeichenzählung eines Textfelds am besten in Android durchführen kann. Ich war auf der Suche dieses aber ich konnte keinen Sinn daraus zu machen scheinen.
Um das Problem zu beschreiben, habe ich einen EditText und versuche, die Zeichen auf 150 zu beschränken. Ich kann dies mit einem Eingabefilter tun, möchte jedoch direkt unter dem Textfeld die Anzahl der von einem Benutzer eingegebenen Zeichen anzeigen (Fast) wie es der Stapelüberlauf gerade tut).
Wenn jemand einen kleinen Ausschnitt aus Beispielcode schreiben oder mich in die richtige Richtung weisen könnte, würde ich das sehr schätzen.
Sie können die Zeichenzählung aus XML selbst mit dem in SupportLibrary v23.1 eingeführten TextInputLayout- Wrapper für EditText durchführen
Wickeln Sie einfach Ihren EditText mit einem TextInputLayout ein und setzen Sie CounterEnabled auf true und setzen Sie eine counterMaxLength.
Sie werden einen wesentlichen Einfluss wie erhalten diese
Sie können counterOverflowTextAppearance , counterTextAppearance verwenden , um den Zähler zu formatieren .
BEARBEITEN
Aus der Android-Dokumentation.
Die TextInputEditText- Klasse wird als untergeordnetes Element dieses Layouts bereitgestellt. Die Verwendung von TextInputEditText ermöglicht TextInputLayout eine bessere Kontrolle über die visuellen Aspekte jeder Texteingabe. Ein Beispiel für eine Verwendung ist wie folgt:
TextInputLayout TextInputEditText
quelle
Sie können dies tun mit
TextInputLayout
und kompatiblen Bibliotheken mit:und komplett:
quelle
Fügen Sie in XML dieses Attribut für editText hinzu
Fügen Sie in Java diesen Listener hinzu
quelle
Es ist sehr einfach Befolgen Sie die folgenden Anweisungen:
==== Fügen Sie sie Ihren Importen hinzu ===
===== Definiere dies =====
========== Inside On Create =====
quelle
quelle
Setzen Sie einfach diese 2 Zeilen
TextInputLayout
in Ihre XML-Datei ein:quelle
Diese Lösung verwendet
Kotlin
und zeigt die Anzahl der verbleibenden Zeichen an. Wenn die aktuelle Anzahl von Zeichen die Grenze von 50 überschreitet, ändert sich die Textfarbe in Rot.Kotlin
Vergessen Sie auch nicht, das
TextWatcher
zu Ihrem hinzuzufügenEditText
quelle
Sie können Ihrem TextInputEditText, der in ein TextInputLayout eingeschlossen wird, einen Zähler hinzufügen. Wie Sie im Beispiel sehen können,
counterEnabled
wird diese FunktioncounterMaxLengh
aktiviert und die Anzahl der Zeichen dafür definiert.quelle
Ich bin auf das gleiche Problem gestoßen und habe Camerons Methode ausprobiert. Es funktioniert, aber es gibt einen kleinen Fehler: Wenn der Benutzer Kopieren und Einfügen verwendet, werden die Zeichen nicht gezählt. Daher schlage ich vor, dies zu tun, nachdem sich der Text geändert hat, wie unten:
quelle
Verwenden Sie Android: maxLength = "140"
Das sollte funktionieren. :) :)
hoffentlich hilft das
quelle
Versuchen Sie so etwas zu tun.
Diese Lösung ist möglicherweise leistungsfähiger als das Abrufen von CharSequence.length. Jedes Mal, wenn Sie auf die Softtastatur tippen, wird das Ereignis ausgelöst. Wenn Sie also eine Länge ausführen, wird jedes Mal die CharSequence gezählt. Dies kann sich verlangsamen, wenn Sie anfangen, in große CharSequnces zu geraten. Der Ereignis-Listener bei Textänderungen greift die Vorher- und Nachher-Zählung an. Dies funktioniert gut für Inkrementierungs- und Dekrementierungswerte
quelle
Versuche dies
`
quelle
Freier Weg;
quelle