Настроить разделитель/разделитель в раскрывающемся списке AutocompleteTextview

Я видел, как этот вопрос задавал несколько раз на сайте, но никто не мог получить никакого ответа.

Есть ли способ настроить внешний вид разделителя в раскрывающемся списке, показывающем при использовании AutocompleteTextview в андроиде?

Это довольно легко для ListView, но используя только ArrayAdapter для autocompletetextview, есть ли способ настроить разделитель.

(Не текстовое представление, я уже знаю это)

Ответ 1

Я не уверен, как вы можете сделать это для одного AutoCompleteTextView, но я знаю, как установить его для всего приложения. Это также должно помочь вам:)

<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>

Ответ 2

Я не нашел никаких свойств разделителя, поэтому сделал это

<?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>

Так что, если у меня есть цвет фона для линейного макета и другой цвет фона для текстового представления (цвет фона textView перекрывает цвет фона линейного макета), теперь с использованием свойства margin и установки нижнего поля textview на 1dp У вас будет чистая линия между элементами....

Ответ 3

Я столкнулся с такой же проблемой и попробовал много способов, но не достиг результата, наконец, я получил быстрый и простой способ установить делитель и длину разделителя с помощью AutocompleteTextview. В принципе, мы можем установить границу с нижней стороны с TextView из макета ArrayAdapter. Как

step1. Сделайте макет для arrayadapetr как

<?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" />

step2: в папке с возможностью создания создайте новый макет его имя 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>

Наконец, выглядит как разделитель.

введите описание изображения здесь

Ответ 4

Ответ от Mark обычно является лучшим решением. Однако разные версии библиотеки AppCompat имеют другое поведение, касающееся того, как android:dropDownListViewStyle влияет на другие меню, например меню переполнения/опций системы. Например, в AppCompat версии 23.0.1, это не повлияет на это меню в ActionBar/Toolbar; в то время как версия 23.2.1 будет влиять на нее, как описано здесь.

Если вы хотите, чтобы стиль был изолирован, чтобы влиять на AutoCompleteTextView, это может быть невозможно. Но альтернативным способом является создание изображения разделителя списка вручную, как часть макета строки выпадающего списка:

Рез/макет/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>

Рез/вытяжка/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>

Затем используйте этот макет в своем адаптере для AutoCompleteTextView:

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

Аналогичный подход с использованием ConstraintLayout здесь.