Android-Format edittext, um nach jeweils 4 Zeichen Leerzeichen anzuzeigen

8

Android - Ich möchte eine Zahleneingabe vom Benutzer in einen EditText erhalten - er muss durch Leerzeichen getrennt sein - alle 4 Zeichen. Beispiel: 123456781234 - & gt; 1234 5678 1234

Dies ist nur für visuelle Zwecke. Allerdings brauche ich die Zeichenfolge ohne Leerzeichen für die weitere Verwendung.

Wie kann ich das am einfachsten machen?

    
user510164 20.04.2012, 19:59
quelle

8 Antworten

3

Sie müssen TextWatcher verwenden, um visuelle Zielbereiche zu erreichen.

Und verwenden Sie einfach eine einfache split-by-space Logik, um sie zurückzuschließen oder die gesamte Zeichenkette pro Zeichen zu durchlaufen und eliminieren Sie (char) 32 von der Zeichenkette

    
waqaslam 20.04.2012, 20:01
quelle
5

ist dieser Editext für Kreditkarten?
Erstellen Sie zuerst die Zählvariable

%Vor%

setze dies in dein oncreate (Aktivität) / onviewcreated (Fragment)

%Vor%     
Ario Singgih Permana 01.05.2016 16:17
quelle
2

Wie @waqas darauf hingewiesen hat, müssen Sie einen TextWatcher verwenden, wenn Sie dies erreichen wollen, da der Benutzer die Nummer eingibt. Hier ist eine Möglichkeit, wie Sie die Räume erreichen können:

%Vor%

Wenn Sie die Zeichenfolge ohne Leerzeichen abrufen müssen, tun Sie Folgendes:

%Vor%     
FoamyGuy 20.04.2012 20:09
quelle
1

Das Format des Textes ist 000 000 0000

android bearbeiten Texttextwatcher-Format Telefonnummer wie xxx-xxx-xx-xx

%Vor%     
ashishdhiman2007 13.07.2017 09:21
quelle
0

Hier ist eine kleine Hilfefunktion. Für Ihr Beispiel würden Sie es mit

aufrufen

addPadding(" ", "123456781234", 4);

%Vor%     
mach 25.03.2013 13:53
quelle
0

Ändern Sie den Live-Text während der Eingabe ist etwas schwierig. Wir sollten die folgenden Probleme behandeln.

a. Cursorposition b. Wir sollten dem Benutzer erlauben, den eingegebenen Text zu löschen.

Der folgende Code behandelt beide Probleme.

  1. Fügen Sie TextWatcher zu EditText hinzu und holen Sie sich den Text von "afterTextchanged ()" und schreiben Sie Ihre Logik

    String str="";      int strOdlen = 0;

    %Vor%
  2. Hier versuche ich, Platz für alle vier Zeichen hinzuzufügen. Nachdem das erste Leerzeichen hinzugefügt wurde, ist die Länge des Texts 5. Das nächste Leerzeichen ist also nach 9 Zeichen.

    if (strLen == 4 || strLen == 9)

    1. Hier ist ein weiteres Problem die Cursorposition. Sobald Sie den Text des Editiertext ändern, bewegt sich der Cursor an die erste Stelle. Also müssen wir den Cursor manuell setzen.

    edtAadharNumber.setSelection (edtAadharNumber.getText (). length ());

    1. Meine Textlänge beträgt nur 12 Zeichen. Also mache ich manuelle Berechnungen, wenn Ihr Text dynamisch ist, dann schreiben Sie dynamische Logik.
Kona Suresh 09.06.2016 05:12
quelle
0

sauberere Version von @ Arios Antwort, die dem DRY-Prinzip folgt:

%Vor%     
Phileo99 22.08.2017 23:36
quelle
0

Wenn Sie die Endlänge des Strings kennen, können Sie auf diese Weise TextWatcher implementieren:

%Vor%

Sie fügen einfach einen Platz für jeden vierstelligen Block hinzu. p2 == 0 soll sicherstellen, dass der Benutzer nicht löscht, sonst würde er / sie eine Bestandsaufnahme erhalten.

Der Code ist in Kotlin, Sie können es genau so in Java tun.

    
kike 31.10.2017 15:49
quelle

Tags und Links