854 Stimmen

Was ist der beste Weg, um die Textlänge von EditText in Android zu begrenzen?

Wie lässt sich die Textlänge eines Dokuments am besten begrenzen? EditText in Android?

Gibt es eine Möglichkeit, dies über xml zu tun?

1 Stimmen

Ich wollte die maximale Anzahl von Zeichen für meinen EditText festlegen. Zuerst war es nicht offensichtlich, dass die Begrenzung der Textlänge dasselbe ist. (Nur eine Anmerkung für einen anderen verwirrten Reisenden).

0 Stimmen

El die richtige Antwort finden Sie hier : stackoverflow.com/a/19222238/276949 . Diese Antwort begrenzt die Länge UND verhindert, dass sich ein Puffer kontinuierlich füllt, nachdem er die Grenze erreicht hat, so dass Ihre Rücktaste richtig zu funktionieren.

3voto

reza_khalafi Punkte 5767

Versuchen Sie dies für Java programmatisch :

myEditText(new InputFilter[] {new InputFilter.LengthFilter(CUSTOM_MAX_LEN)});

4 Stimmen

Sie haben vergessen, die Methode aufzurufen, also sollte es so aussehen: myEditText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(CUSTOM_MAX_LEN)});

3voto

Navadip Patel Punkte 260

Es auf einfache Weise in xml:

android:maxLength="4"

wenn Sie benötigen, um 4 Zeichen in xml edit-text so zu setzen, verwenden Sie diese

<EditText
    android:id="@+id/edtUserCode"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxLength="4"
    android:hint="Enter user code" />

3voto

Gal Rom Punkte 5833

Dies ist eine benutzerdefinierte EditText-Klasse, die es ermöglicht, den Längenfilter zusammen mit anderen Filtern zu verwenden. Dank der Antwort von Tim Gallagher (unten)

import android.content.Context;
import android.text.InputFilter;
import android.util.AttributeSet;
import android.widget.EditText;

public class EditTextMultiFiltering extends EditText{

    public EditTextMultiFiltering(Context context) {
        super(context);
    }

    public EditTextMultiFiltering(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public EditTextMultiFiltering(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public void setMaxLength(int length) {
        InputFilter curFilters[];
        InputFilter.LengthFilter lengthFilter;
        int idx;

        lengthFilter = new InputFilter.LengthFilter(length);

        curFilters = this.getFilters();
        if (curFilters != null) {
            for (idx = 0; idx < curFilters.length; idx++) {
                if (curFilters[idx] instanceof InputFilter.LengthFilter) {
                    curFilters[idx] = lengthFilter;
                    return;
                }
            }

            // since the length filter was not part of the list, but
            // there are filters, then add the length filter
            InputFilter newFilters[] = new InputFilter[curFilters.length + 1];
            System.arraycopy(curFilters, 0, newFilters, 0, curFilters.length);
            newFilters[curFilters.length] = lengthFilter;
            this.setFilters(newFilters);
        } else {
            this.setFilters(new InputFilter[] { lengthFilter });
        }
    }
}

2voto

Sanjay Kumaar Punkte 610

Das funktioniert gut...

android:maxLength="10"

dies akzeptiert nur 10 Zeichen.

1voto

Jocelin Punkte 219

Sie können verwenden android:maxLength="10" im EditText (hier sind bis zu 10 Zeichen erlaubt)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X