Tengo un TextView en mi aplicación que quiero que un usuario sea capaz de introducir sólo caracteres alfanuméricos. ¿Cómo puede hacerse esto? ¡Gracias!Cómo restringir TextView para permitir sólo caracteres alfanuméricos en Android
Respuesta
En el XML, poner esto:
android:digits="abcdefghijklmnopqrstuvwxyz1234567890 "
Esto debería funcionar:
textView.setInputType(InputType.TYPE_CLASS_NUMBER);
Esto solo permite los números – richy
Aquí es una solución mejor ......... https://groups.google.com/forum/?fromgroups=#!topic/android-developers/hS9Xj3zFwZA
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!Character.isLetterOrDigit(source.charAt(i))) {
return "";
}
}
return null;
}
};
edit.setFilters(new InputFilter[]{filter});
Solución mucho mejor al permitir Mayúsculas. –
Esta solución funciona para casos simples de caracteres individuales que se tipean, pero no maneja adecuadamente copiar y pegar, o cuando otros 'InputFilters' se establecen en' EditText'. He publicado una solución más completa. –
La solución InputFilter
funciona bien y le da control total para filtrar la entrada en un nivel de grano más fino que android:digits
. El método debe devolver filter()
null
si todos los caracteres son válidos, o una CharSequence
de sólo los caracteres válidos si algunos caracteres no son válidos. Si se copian y se pegan varios caracteres, y algunos no son válidos, solo se deben conservar los caracteres válidos (@ la solución de AchJ rechazará el pegado completo si alguno de los caracteres es inválido).
public static class AlphaNumericInputFilter implements InputFilter {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
// Only keep characters that are alphanumeric
StringBuilder builder = new StringBuilder();
for (int i = start; i < end; i++) {
char c = source.charAt(i);
if (Character.isLetterOrDigit(c)) {
builder.append(c);
}
}
// If all characters are valid, return null, otherwise only return the filtered characters
boolean allCharactersValid = (builder.length() == end - start);
return allCharactersValid ? null : builder.toString();
}
}
También, cuando se establece un InputFilter
, debe asegurarse de no sobrescribir otra InputFilters
en su conjunto EditText
; estos se pueden establecer en XML, como android:maxLength
. También debe considerar el orden en que se establece el InputFilters
. Cuando se usa junto con un filtro de longitud, su filtro personalizado debe insertarse antes del filtro de longitud, de esa manera el texto pegado aplica el filtro personalizado antes del filtro de longitud (la solución @ AchJ sobrescribirá todos los demás InputFilters
y solo aplicará el personalizado).
// Apply the filters to control the input (alphanumeric)
ArrayList<InputFilter> curInputFilters = new ArrayList<InputFilter>(Arrays.asList(editText.getFilters()));
curInputFilters.add(0, new AlphaNumericInputFilter());
InputFilter[] newInputFilters = curInputFilters.toArray(new InputFilter[curInputFilters.size()]);
editText.setFilters(newInputFilters);
para simplificar los setFilters que haría: editText.setFilters (nueva InputFilter [] {new CurrencyFormatInputFilter()}); – Rocel
@Rocel lea cuidadosamente mi explicación: "_Usted debe asegurarse de no sobrescribir otros InputFilters establecidos en su EditarTexto, los cuales podrían establecerse en XML, como' androide: maxLength'._" Su sugerencia sería sobrescribir cualquier otro' InputFilter', al igual que la solución de @ AchJ, que * no * es lo que queremos hacer aquí. –
oh ok, leí mal entonces, mi mal;) – Rocel
- 1. Permitir solo caracteres alfanuméricos para un UITextField
- 2. RegEx para Javascript para permitir solo caracteres alfanuméricos
- 3. Permitir solo caracteres alfanuméricos en el cuadro de texto
- 4. Cómo comprobar los caracteres alfanuméricos
- 5. Mostrar caracteres Unicode en TextView Android
- 6. Regex para permitir solo caracteres alfanuméricos, coma, guión, guión bajo y punto y coma
- 7. ¿Cómo crear una expresión regular para aceptar solo caracteres alfanuméricos?
- 8. Expresión regular para permitir caracteres alfanuméricos, solo un espacio y luego alpahnumeric
- 9. Google usando caracteres no alfanuméricos
- 10. caracteres cheque alfanuméricos en cadena en C#
- 11. Comprimir 21 caracteres alfanuméricos en 16 bytes
- 12. Cómo para controlar la tableta Android sólo para permitir una aplicación a ejecutar
- 13. Regex para eliminar caracteres no alfanuméricos de cadenas UTF8
- 14. Nodejs genera caracteres alfanuméricos únicos cortos
- 15. android cómo hacer Tooltip para TextView
- 16. Linkify en android TextView
- 17. cómo cambiar texto en Android TextView
- 18. Android TextView
- 19. Restringir solo a los caracteres en inglés
- 20. Clickable TextView en Android
- 21. Eliminar todos los caracteres no alfanuméricos mediante preg_replace
- 22. expresiones regulares carácter concordante alfa seguida de 4 caracteres alfanuméricos
- 23. Cómo dibujar TextView en Canvas en android ..?
- 24. ¿Cómo elimino caracteres no alfanuméricos (espacios incluidos) de una cadena?
- 25. ¿Cómo determinar si una cadena tiene caracteres no alfanuméricos?
- 26. cómo ajustar texto en textview en android
- 27. ¿Manera elegante de contar caracteres alfanuméricos en una cadena?
- 28. Cómo ajustar el interletraje de texto en Android TextView?
- 29. Caracteres no alfanuméricos en los nombres de interfaz COM/.NET
- 30. Justificar texto en TextView Android
gracias, ¡eso es exactamente lo que estaba buscando! –
nice answer.gracias mucho –
Wow Android lo hace tan fácil. iOS necesita 1000 veces más esfuerzo para lograr la misma funcionalidad. – Moe