Android :: Establecer la longitud máxima de EditText mediante programación con otro InputFilter

Estoy utilizando InputFilter como este para permitir sólo alfa y números

private InputFilter[] inputFilters = new InputFilter[] { new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for (int i = start; i < end; ++i) { if (!Pattern.compile("[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890]*").matcher(String.valueOf(source.charAt(i))).matches()) { return ""; } } return null; } } }; 

Pero el problema es "android: maxLength" el valor en el archivo xml no está funcionando con este InputFilter

Creo que necesito código en InputFilter para establecer max-length de EditText

¿Alguien tiene una buena idea para esto?

Gracias

5 Solutions collect form web for “Android :: Establecer la longitud máxima de EditText mediante programación con otro InputFilter”

Solo prueba de esta manera

InputFilter

 InputFilter filter = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for (int i = start; i < end; ++i) { if (!Pattern.compile("[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890]*").matcher(String.valueOf(source.charAt(i))).matches()) { return ""; } } return null; } }; 

Cómo aplicar

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EditText edt =(EditText)findViewById(R.id.edt) ; edt.setFilters(new InputFilter[]{filter,new InputFilter.LengthFilter(10)}); } 
 public void setEditTextMaxLength(int length) { InputFilter[] filterArray = new InputFilter[1]; filterArray[0] = new InputFilter.LengthFilter(length); edt_text.setFilters(filterArray); } 

Si queremos limitar la entrada de caracteres en un EditText , EditText en formato XML nos da android:maxLength para hacer esto. Pero en los códigos java puede preguntarse por qué no hay ninguna función setMaxLength (longitud int) . La razón detrás de esto es que cuando usted quiere restringir el EditText para aceptar cierto valor, usted tiene que filtrar y esto sería invocado por setFilters. Para que nuestro EditText tenga un tamaño fijo podemos usar el siguiente código.

 EditText et = new EditText(this); int maxLength = 3; InputFilter[] FilterArray = new InputFilter[1]; FilterArray[0] = new InputFilter.LengthFilter(maxLength); et.setFilters(FilterArray); 

Haciendo uso de Deepak's Utilicé lo siguiente:

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

Una simple línea única sería:

 MyditText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(10) }); //replace 10 with req length 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.