¿Cómo se configura el número máximo de caracteres para un EditText en Android?

128

¿Cómo se configura el número máximo de caracteres para una entrada de Android EditText? Veo setMaxLines, setMaxEMS, pero nada para la cantidad de caracteres.

lector de código de barras
fuente
Además, la respuesta SO [aquí] [1] para establecer la longitud máxima dinámicamente [1]: stackoverflow.com/a/4145983/530513
David O'Meara

Respuestas:

261

En XML puede agregar esta línea EditText Viewdonde 140 es el número máximo de caracteres:

android:maxLength="140"
Massimo Variolo
fuente
¿me puede guiar cómo podemos lograr esto usando la pestaña de propiedades en la vista gráfica xml del eclipse?
Nitesh Verma
@NiteshVerma en su archivo xml res / layout pone el siguiente '<LinearLayout .... <EditText android: maxLength = "20"'
Shell Scott
60

Dinamicamente:

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

Vía xml:

<EditText
    android:maxLength="@integer/max_edittext_length"
Gorgona
fuente
45

Puede usar un InputFilter, esa es la forma:

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
fuente
7

Siempre establezco el máximo de esta manera:

    <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
fuente
4

Me esta funcionando.

    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
fuente
0

Funcionó para mí de esta manera, es lo mejor que he encontrado. Tiene una longitud máxima de 200 caracteres.

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
fuente
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 tiene que establecer "textFilter"

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

use esta función en cualquier lugar fácilmente:

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

Camino Kotlin

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