studio - textinputlayout android
Cómo utilizar TextInputLayout en la nueva biblioteca de diseño de Android (7)
Esto se define en la here en "Etiquetas flotantes para editar texto".
<android.support.design.widget.TextInputLayout
android:id="@+id/name_et_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin">
<EditText
android:id="@+id/FeedBackerNameET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="hinttext"
android:inputType="textPersonName|textCapWords" />
</android.support.design.widget.TextInputLayout>
Recientemente, Google introdujo la nueva Biblioteca de diseño de Android en la que se utiliza el campo TextInputLayout
para habilitar la función Sugerencia flotante de EditText.
No hay mucha orientación disponible here .
Esta pagina dice
Ahora puedes envolverlo en un TextInputLayout
Pero no tengo idea porque la predicción inteligente (Ctrl + ESPACIO) no predice ningún atributo a TextInputLayout. Así que mis preguntas son:
¿Cómo conseguimos el EditText subyacente a este componente?
¿Cómo podemos obtener datos de EditText?
La forma correcta ...
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<android.support.design.widget.TextInputEditText
android:id="@+id/card_id_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/form_card_id_text"
android:inputType="number"
android:maxLength="10"/>
</android.support.design.widget.TextInputLayout>
Si usa EditText como un elemento secundario de TextInputLayout, verá este mensaje en Android Monitor:
I / TextInputLayout: EditText agregado no es un TextInputEditText. Por favor, cambie a usar esa clase en su lugar.
Para que esto funcione bien, debes permitirte que el tema de la aplicación se extienda desde Theme.AppCompat
(o su descendiente), como se extiende desde Theme.AppCompat.Light.NoActionBar
.
Podemos usar AppCompactEditText también para esta necesidad de agregar soporte: appcompat in gradle
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp">
<android.support.v7.widget.AppCompatEditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint"
android:maxLength="100"
android:inputType="textNoSuggestions"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/font_size_large" />
</android.support.design.widget.TextInputLayout>
EditText
TextInputLayout
alrededor de TextInputEditText
lugar de EditText
.
Envolver alrededor de EditText
tiene problemas en modo horizontal. Consulte este artículo para más detalles.
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="hint"
android:id="@+id/editText1" />
</android.support.design.widget.TextInputLayout>
TextInputLayout
extiende la clase ViewGroup
. Entonces, lo que significa que tiene que envolver su EditText
en un TextInputLayout
.
<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="hint"
android:id="@+id/editText1" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/til_message"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/et_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/type_message"
android:maxLines="5"/>
</android.support.design.widget.TextInputLayout>
La sugerencia cambiará automáticamente una vez que comience a escribir en el texto de edición y tendrá los errores que aparecen debajo del texto de edición.
tilMessage.setError("Message field is empty!");
para deshabilitar el error
tilMessage.setErrorEnabled(false);