Pregunta Personalice el divisor / separador en el menú desplegable de una vista AutocompletarTexto


He visto esta pregunta en otras ocasiones en el sitio, pero nadie pudo obtener ninguna respuesta.

¿Hay alguna forma de personalizar la apariencia del divisor en el menú desplegable que se muestra al usar una vista AutocompleteText en Android?

Es bastante fácil para un ListView, pero usando solo un ArrayAdapter para la vista autocompletetext, hay alguna manera de personalizar el divisor.

(No es la vista de texto, ya sé hacerlo)


12
2017-08-02 12:56


origen


Respuestas:


No estoy seguro de cómo puedes hacerlo para AutoCompleteTextView solo, pero sé cómo configurarlo para toda la aplicación. Esto también debería ayudarte :)

<style name="MyTheme" parent="AppTheme">
        <item name="android:dropDownListViewStyle">@style/MyListViewStyle</item>
</style>

<style name="MyListViewStyle" parent="@android:style/Widget.ListView">
        <item name="android:divider">#F00</item>
        <item name="android:dividerHeight">1px</item>
</style>

17
2017-09-18 11:10



No encontré ninguna propiedad del divisor así que hice esto

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Medium Text"
    android:id="@+id/textView129"
    android:textColor="#000000"
    android:background="@color/white"
    android:layout_marginBottom="1dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"/>
</LinearLayout>

Lo que hago es tener un color de fondo para el diseño lineal y otro color de fondo para la vista de texto (el color de fondo de textView se superpone al color de fondo del diseño lineal) ahora usando la propiedad de margen y estableciendo el margen inferior de textview en 1 píctor u. obtener una línea limpia entre los elementos ....


1
2017-08-14 13:42



Me enfrenté al mismo problema e intenté de muchas maneras, pero no alcancé el resultado, por fin obtuve una manera rápida y fácil de configurar el divisor y la longitud del divisor con AutocompleteTextview. Básicamente podemos establecer un borde desde el lado inferior con TextView de ArrayAdapter Layout. Como

paso 1. Haz un diseño para arrayadapetr como

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/testt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_single_line"
android:textColor="@drawable/text_color"
android:textAppearance="?android:attr/textAppearanceMediumInverse"
style="?android:attr/dropDownItemStyle"
android:maxLines="1"
android:padding="3dp"
android:textSize="16sp" />

paso2: en la carpeta dibujable, crea un nuevo diseño, su nombre background_single_line.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="@android:color/black" />
    </shape>
</item>
<item android:bottom="1dp">
    <shape android:shape="rectangle">
        <solid android:color="@android:color/white" />
    </shape>
</item>

Finalmente se ve como divisor.

enter image description here


1
2017-12-02 10:21



La respuesta de marca es normalmente la mejor solución. Sin embargo, las diferentes versiones de la biblioteca AppCompat tienen un comportamiento diferente, con respecto a cómo android:dropDownListViewStyle afecta a otros menús, como el menú de desbordamiento / opciones del sistema. Por ejemplo, en la versión 23.0.1 de AppCompat, no afectará este menú en la Barra de acciones / Barra de herramientas; mientras que la versión 23.2.1 lo afectará, como se explicó aquí.

Si desea que un estilo que está aislado solo afecte a AutoCompleteTextView, puede que no sea posible. Pero una forma alternativa es crear la imagen del divisor de listas manualmente, como parte del diseño de la fila de la lista desplegable:

res / layout / autocomplete_list_row.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:layout_height="50dip">

    <TextView
        android:id="@+id/text"
        style="?android:attr/dropDownItemStyle"
        android:textSize="18sp"
        android:layout_width="fill_parent"
        tools:text="An auto-complete list item"
        android:minHeight="48dip"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dip"
        android:background="@drawable/divider"/>

</LinearLayout>

res / drawable / divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle">
    <size android:height="1dp" />
    <solid android:color="#458c8c8c" />
</shape>

A continuación, utilice este diseño en su adaptador para AutoCompleteTextView:

ArrayAdapter<CharSequence> autoCompleteListAdapter = 
    new ArrayAdapter<>(context,
                       R.layout.autocomplete_list_row,
                       R.id.text, arrayList);

Enfoque similar utilizando Restricción aquí.


0
2018-01-02 21:12