android - studio - EditText agregado no es un TextInputEditText. Cambie a usar esa clase en su lugar
textinputlayout error (4)
Estoy usando un
EditText
dentro de un
TextInputLayout
, pero después de actualizar la biblioteca de soporte a 23.2.0, recibo esta advertencia en el logcat, ¿Cuál es la diferencia entre un
EditText
normal y un
TextInputEditText
?
Parece que no puedo encontrar ninguna documentación para ello.
No hay documentación para ello, pero la clase es un
EditText
normal con una sola característica adicional:
El uso de esta clase nos permite mostrar una pista en el IME cuando está en modo ''extraer''.
Específicamente establece el
EditorInfo.hintText
.
Notará que en la clase
TextInputLayout
puede especificar la sugerencia y su apariencia en lugar de como parte del widget secundario
EditText
.
Si necesita hacer eso, debe usar un
TextInputEditText
para que preste atención a la información de pista que especificó en
TextInputLayout
.
Son esencialmente lo mismo, pero creo que
TextInputEditText
tiene más características y posiblemente atributos.
Cambié a
TextInputEditText
y todo funcionó y se veía como antes con el
EditText
estándar.
También me preguntaba esto, Daniel Wilson reunió la documentación, pero a simple vista no significa mucho. Esto es de lo que se trata: el "modo de extracción" se refiere al tipo de vista que se muestra cuando el espacio es demasiado pequeño, por ejemplo, el paisaje en un teléfono. Estoy usando Galaxy S4 con Google Keyboard como IME.
IU horizontal sin IME visible
Según el enfoque (en la Descripción), puede ver
TextInputLayout
en acción empujando la pista fuera del editor.
Nada especial aquí, esto es lo que se supone que debe hacer
TextInputLayout
.
IU horizontal editando el campo Nombre vacío
Editando el Nombre puede ver que el IME no le da una pista de lo que está editando.
Paisaje UI edición vacía Descripción campo
Al editar la Descripción, puede ver que el IME le da una pista de lo que está editando.
XML de diseño
La diferencia entre los dos campos es su tipo
EditText
VS
TextInputEditText
.
Lo importante aquí es que
TextInputLayout
tiene el
android:hint
y no el EditText envuelto, este es el caso cuando las pocas líneas de código Java de
TextInputEditText
hacen una gran diferencia.
Campo de nombre
<android.support.design.widget.TextInputLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Item Name"
>
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</android.support.design.widget.TextInputLayout>
Campo de descripción
<android.support.design.widget.TextInputLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Item Description"
>
<android.support.design.widget.TextInputEditText
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:minLines="4"
android:scrollbars="vertical"
/>
</android.support.design.widget.TextInputLayout>
Tuve este problema y acabo de eliminar esta línea en mi archivo xml:
android: fitsSystemWindows = "true"
Y el error desapareció.