Buscar..


Introducción

TextInputLayout se introdujo para mostrar la etiqueta flotante en EditText. TextInputLayout debe incluir EditText para mostrar la etiqueta flotante.

Observaciones

TextInputLayout es un diseño que envuelve un EditText (o descendiente) para mostrar una etiqueta flotante cuando la sugerencia está oculta debido a que el usuario ingresa texto. Además, TextInputLayout permite mostrar un mensaje de error debajo de EditText .

Asegúrese de que la siguiente dependencia se agregue al archivo build.gradle su aplicación en las dependencias:

compile 'com.android.support:design:25.3.1'

Uso básico

Es el uso básico de TextInputLayout .
Asegúrese de agregar la dependencia en el archivo build.gradle como se describe en la sección de comentarios.

Ejemplo:

 <android.support.design.widget.TextInputLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content">

     <EditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="@string/username"/>
 
 </android.support.design.widget.TextInputLayout>

Errores de manejo

Puede usar TextInputLayout para mostrar mensajes de error de acuerdo con las pautas de diseño del material utilizando los métodos setError y setErrorEnabled .

Para mostrar el error debajo del uso EditText:

TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setErrorEnabled(true);
til.setError("You need to enter a name");

Para habilitar el error en TextInputLayout , puede utilizar la app:errorEnabled="true" en xml o til.setErrorEnabled(true); como se muestra arriba.

Obtendrás:

introduzca la descripción de la imagen aquí

Agregando el conteo de personajes

TextInputLayout tiene un contador de caracteres para un EditText definido dentro de él.
El contador se renderizará debajo de EditText.

Solo use los setCounterEnabled() y setCounterMaxLength :

TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setCounterEnabled(true);
til.setCounterMaxLength(15);

o los app:counterEnabled y app:counterMaxLength en el xml.

<android.support.design.widget.TextInputLayout
    app:counterEnabled="true"
    app:counterMaxLength="15">

    <EditText/>

</android.support.design.widget.TextInputLayout>

La visibilidad de la contraseña cambia

Con un tipo de contraseña de entrada, también puede habilitar un icono que puede mostrar u ocultar todo el texto usando el atributo passwordToggleEnabled .

También puede personalizar el mismo valor predeterminado utilizando estos atributos:

Ejemplo:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleContentDescription="@string/description"
        app:passwordToggleDrawable="@drawable/another_toggle_drawable"
        app:passwordToggleEnabled="true">

            <EditText/>

</android.support.design.widget.TextInputLayout>

TextInputEditText

TextInputEditText es un EditText con una solución adicional para mostrar una sugerencia en el IME cuando está en el modo 'extraer' .

El modo Extraer es el modo al que cambia el editor de teclado cuando hace clic en un texto de edición cuando el espacio es demasiado pequeño (por ejemplo, paisaje en un teléfono inteligente).
En este caso, el uso de un EditText mientras se está editando el texto se puede ver que el IME no le da una pista de lo que está editando

TextInputEditText soluciona este problema al proporcionar un texto de sugerencia mientras el IME del dispositivo del usuario está en modo Extraer.

Ejemplo:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Description"
    >
    <android.support.design.widget.TextInputEditText
        android:id="@+id/description"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</android.support.design.widget.TextInputLayout>

Personalizando la apariencia de TextInputLayout

Puede personalizar la apariencia de TextInputLayout y su EditText incrustado definiendo estilos personalizados en su styles.xml . Los estilos definidos se pueden agregar como estilos o temas a su TextInputLayout .

Ejemplo para personalizar el aspecto de la pista:

styles.xml :

<!--Floating label text style-->  
<style name="MyHintStyle" parent="TextAppearance.AppCompat.Small">  
    <item name="android:textColor">@color/black</item>
</style>

<!--Input field style-->  
<style name="MyEditText" parent="Theme.AppCompat.Light">  
    <item name="colorControlNormal">@color/indigo</item>
    <item name="colorControlActivated">@color/pink</item>
</style>  

Para aplicar el estilo, actualice su TextInputLayout y EditText de la siguiente manera

<android.support.design.widget.TextInputLayout  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintTextAppearance="@style/MyHintStyle">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/Title"
        android:theme="@style/MyEditText" />

</android.support.design.widget.TextInputLayout>  

Ejemplo para personalizar el color de acento de TextInputLayout . El color de acento afecta el color de la línea de base del texto de EditText y el color del texto del texto de sugerencia flotante:

styles.xml :

<style name="TextInputLayoutWithPrimaryColor" parent="Widget.Design.TextInputLayout">
    <item name="colorAccent">@color/primary</item>
</style> 

archivo de diseño:

<android.support.design.widget.TextInputLayout
            android:id="@+id/textInputLayout_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/TextInputLayoutWithPrimaryColor">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/textInputEditText_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/login_hint_password"
                android:inputType="textPassword" />

</android.support.design.widget.TextInputLayout>


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow