TEORÍA
La View EditText se puede combinar con un Layout de tipo «TextInputLayout» para conseguir una estética mejorada del EditText y facilitar algunas tareas (como la de mostrar errores en el input cuando este contiene algún caracter ilegal).
El EditText debe ser hijo directo y único del TextInputLayout.
NOTA: este Layout va a necesitar el namespace que típicamente se le asigna a «xmlns:app» al nodo raíz:
xmlns:app="http://schemas.android.com/apk/res-auto"
PRÁCTICA
Alguna de las utilidades que brinda este Layout:
Hint / Pista
La pista (hint), en lugar de desaparecer, ejecuta una animación en la cual la pista se mueve a la parte superior izquierda del input mientras se hace más pequeña y se quede ahí aún después de haber escrito los datos. No requiere ningún atributo esta etiqueta para que ejecute dicha animación.
<android.support.design.widget.TextInputLayout android:layout_width="..." android:layout_height="wrap_content"> <EditText android:layout_width="..." android:layout_height="wrap_content" android:inputType="..." android:hint="Pista" > </EditText> </android.support.design.widget.TextInputLayout>
Error
Se puede indicar que deseamos mostrar un mensaje de error bajo el EditText si el checking del input falló, para ello se usa el atributo «app:errorEnabled»
app:errorEnabled="true"
Luego, desde código Android, podemos insertar o quitar el mensaje de error:
TextInputLayout inputLayout = findViewById(R.id.miInputLayout); //Podemos acceder a la vista EditText desde el Layout EditText input = inputLayout.getEditText(); String inputText = input.getText().toString().trim(); //Comprobamos que tiene un valor aceptable //en este caso el filtro va a ser que no esté vacío if(inputText.isEmpty()){ //Poner el mensaje de error en el Layout inputLayout.setError("Este campo es requerido"); }else{ //Quitar el mensaje de error del Layout inputLayout.setError(null); }
Contador de caracteres
Podemos añadir un contador de caracteres al input para saber cuántos lleva escrito el usuario con «app:counterEnabled»
app:counterEnabled="true"
Esto habitualmente es útil cuando queremos poner un tope de caracteres al campo de texto (el cual debería concordar con el atributo «android:maxLength» del EditText para que no se escriban más caracteres y el usuario sepa por qué) con «app:counterMaxLength«.
app:counterMaxLength="15"
Mostrar/ocultar contraseña
Cuando el EditText es de tipo contraseña («textPassword» ó «numberPassword») se puede añadir un botón dentro del input para que muestre/oculte la constraseña que hemos escrito con «app:passwordToggleEnabled«. Sólo funcionará si el input es de tipo password, sino se ignora.
app:passwordToggleEnabled="true"
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.