Comment définir le nombre maximum de caractères pour un EditText dans Android?

128

Comment définir le nombre maximal de caractères pour une entrée Android EditText? Je vois setMaxLines, setMaxEMS, mais rien pour le nombre de caractères.

lecteur de code-barres
la source
Aussi, la réponse SO [ici] [1] pour définir dynamiquement la longueur maximale [1]: stackoverflow.com/a/4145983/530513
David O'Meara

Réponses:

261

En XML, vous pouvez ajouter cette ligne à la EditText Viewoù 140 est le nombre maximum de caractères:

android:maxLength="140"
Massimo Variolo
la source
pouvez-vous m'indiquer comment pouvons-nous y parvenir en utilisant l'onglet Propriétés de la vue graphique xml de l'éclipse?
Nitesh Verma
@NiteshVerma dans votre fichier xml res / layout mis à côté '<LinearLayout .... <EditText android: maxLength = "20"'
Shell Scott
60

Dynamiquement:

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

Via xml:

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

Vous pouvez utiliser un InputFilter, c'est comme ça:

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
la source
7

Je règle toujours le maximum comme ceci:

    <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
la source
4

Ça marche pour moi.

    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
la source
0

Cela a fonctionné pour moi de cette façon, c'est le meilleur que j'ai trouvé. C'est pour une longueur maximale de 200 caractères

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
la source
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 doit définir "textFilter"

        android:inputType="textFilter"
Shetty Suresh Babu.
la source
0

utilisez cette fonction n'importe où facilement:

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

Voie Kotlin

editText.filters = arrayOf(InputFilter.LengthFilter(maxLength))
Vlad
la source