Wie legen Sie die maximale Anzahl von Zeichen für einen EditText in Android fest?

127

Wie legen Sie die maximale Anzahl von Zeichen für eine Android EditText-Eingabe fest? Ich sehe setMaxLines, setMaxEMS, aber nichts für die Anzahl der Zeichen.

Barcode-Leser
quelle
Auch die SO-Antwort [hier] [1], um die maximale Länge dynamisch einzustellen
David O'Meara

Antworten:

260

In XML können Sie diese Zeile zu der Zeile hinzufügen, bei der EditText View140 die maximale Anzahl von Zeichen ist:

android:maxLength="140"
Massimo Variolo
quelle
Können Sie mir zeigen, wie wir dies erreichen können, indem wir die Registerkarte Eigenschaften in der grafischen XML-Ansicht der Eclipse verwenden?
Nitesh Verma
@NiteshVerma in Ihrer Res / Layout-XML-Datei als nächstes '<LinearLayout .... <EditText android: maxLength = "20"'
Shell Scott
60

Dynamisch:

editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(MAX_NUM) });

Über xml:

<EditText
    android:maxLength="@integer/max_edittext_length"
goRGon
quelle
45

Sie können einen InputFilter verwenden, so geht's:

EditText myEditText = (EditText) findViewById(R.id.editText1);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(10); //Filter to 10 characters
myEditText .setFilters(filters);
Superlandero
quelle
7

Ich stelle das Maximum immer so ein:

    <EditText
        android:id="@+id/edit_blaze_it
        android:layout_width="0dp"
        android:layout_height="@dimen/too_high"

    <!-- This is the line you need to write to set the max-->
        android:maxLength="420"
        />
ZooMagic
quelle
4

Es funktioniert für mich.

    etMsgDescription.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maximum_character)});

    etMsgDescription.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            tvCharacterLimite.setText(" "+String.valueOf(maximum_character - etMsgDescription.getText().length()));
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
Chirag
quelle
0

Es hat bei mir so funktioniert, es ist das Beste, was ich gefunden habe. Es ist für eine maximale Länge von 200 Zeichen

editObservations.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if (editObservations.getText().length() >= 201){
                String str = editObservations.getText().toString().substring(0, 200);
                editObservations.setText(str);
                editObservations.setSelection(str.length());
        }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
                                          int after) {
    }

    @Override
    public void afterTextChanged(Editable s) {
    }
});
Camilo Soto
quelle
0
   <EditText
        android:id="@+id/edtName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter device name"
        android:maxLength="10"
        android:inputType="textFilter"
        android:singleLine="true"/>

InputType muss "textFilter" setzen

        android:inputType="textFilter"
Shetty Suresh Babu.
quelle
0

Verwenden Sie diese Funktion überall einfach:

 public static void setEditTextMaxLength(EditText editText, int length) {
    InputFilter[] FilterArray = new InputFilter[1];
    FilterArray[0] = new InputFilter.LengthFilter(length);
    editText.setFilters(FilterArray);
  }
Milad Mohamadi
quelle
0

Kotlin Weg

editText.filters = arrayOf(InputFilter.LengthFilter(maxLength))
Vlad
quelle