android - textinputedittext - textinputlayout background




TextInputLayout y AutoCompleteTextView (2)

Estoy usando TextInputLayout en mi aplicación de Android para lograr ese efecto de etiqueta flotante en mis campos de entrada. Sé que también debería utilizar TextInputEditText para permitir que se muestren sugerencias cuando se encuentra en modo horizontal y la entrada llena toda la pantalla.

Sin embargo, en algunos de mis campos de entrada tengo autocompletado usando AutoCompleteTextView (que IMO tiene un nombre realmente incoherente: "TextView" en lugar de "EditText" - pero esa es otra historia) y eso obviamente se hereda directamente de EditText . Por lo tanto, no tiene la misma funcionalidad que TextInputEditText trae.

Así que me pregunto si hay una manera de lograr la misma funcionalidad de sugerencia en el paisaje (sin crear mi propia implementación de TextInputAutoCompleteTextView , y también evitar las advertencias de pelusas que se producen). ¿Me estoy perdiendo de algo? Supongo que entiendo que no hicieron versiones personalizadas de todas las subclases directas e indirectas de EditText para esta cosa específica, ¿entonces se espera que yo haga las mías?


A partir de la respuesta de chessdork, pensé que me gustaría profundizar más en cómo puedes incorporar un autocompletado con una sugerencia en tu proyecto. Aquí están los pasos exactos que solía hacer para que funcione:

1) Asegúrese de tener la implementation 'com.android.support:design:26.1.0' en sus dependencias de Gradle. El nombre exacto del paquete será ligeramente diferente según la versión de su SDK.

2) Copie la clase TextInputAutoCompleteTextView de la respuesta de @ chessdork y póngala en una clase pública dentro de su proyecto.

3) Lugar donde desea que el texto de edición de relleno automático esté en su diseño XML. Debería estar estructurado así:

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="16dp">
        <mycompany.views.TextInputAutoCompleteTextView
            android:id="@+id/myAutoFill"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/myHint"/>
        </android.support.design.widget.TextInputLayout>

Ambas respuestas (@chessdork y @Shn_Android_Dev) ayudan a lograr el comportamiento correcto de un AutocompletarTextView (ACTV) dentro de un TextInputLayout (TIL), sin embargo, descubrí que no había espacio entre el inicio / final del TIL y el ACTV dentro de él. Como se puede ver en la siguiente imagen:

Lo que hice para resolver el problema fue agregar un par de valores de relleno al inicio y al final de TextInputAutoCompleteTextView , los valores que funcionaron para mí son 12dp al principio y 8dp al final, pero por supuesto, puedes jugar con eso y Consigue el efecto deseado. Tomando el ejemplo de @Shn_Android_Dev, el TextInputAutoCompleteTextView terminaría como:

<mycompany.views.TextInputAutoCompleteTextView
    android:id="@+id/myAutoFill"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingStart="12dp"
    android:paddingEnd="8dp"
    android:hint="@string/myHint"/>

Y la vista ahora se ve así:







android-edittext