Как установить цвет фона в раскрывающемся меню автозаполнения?

В настоящее время мы работаем над настройкой элемента меню Exposed Dropdown с использованием компонентов материального дизайна и рекомендаций для меню. Однако при отображении моего текстового представления автозаполнения он не имеет того же фона, что и другие мои текстовые поля.

Я попытался установить для атрибута boxBackgroundColor в TextInputLayout другой цвет и изменить фон в Autocomplete TextView. Также я устал смотреть, могу ли я изменить всплывающую тему для меню, но мне не повезло.

 // In the onCreateView of fragment

        ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), R.layout.dropdown_menu_popup_item, getResources().getStringArray(R.array.down_payment_method_selection));
        monthsAtEmploymentSelection.setAdapter(adapter);

<com.google.android.material.textfield.TextInputLayout
                style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginEnd="8dp"
                android:hint="@string/months_at_employment_hint"
                app:boxBackgroundColor="@color/white">

                <AutoCompleteTextView
                    android:id="@+id/months_at_employment_selection"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />

            </com.google.android.material.textfield.TextInputLayout>
<!--dropdown_menu_popup_item.xml-->
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:ellipsize="end"
    android:maxLines="1"
    android:textAppearance="?attr/textAppearanceSubtitle1"
    android:background="@color/white"/>

Я хочу, чтобы фон был прозрачным или совпадал с текущим белым фоном. В настоящее время это не совсем белый цвет, который не соответствует полям.

Пример проблем с цветом при использовании стиля расширенного раскрывающегося меню


person Steven Elliott    schedule 17.06.2019    source источник


Ответы (3)


Установив атрибут app:boxBackgroundColor="@color/yourcolor" в поле TextInputLayout в вашем файле макета, вы должны правильно изменить цвет фона.

Вам также может потребоваться установить дочерние элементы android:background="@null", в моем случае AutoCompleteTextView, чтобы правильно учитывать атрибут boxBackgroundColor. Согласно документации, это единственный раз, когда вам может понадобиться для установки цвета фона дочерних элементов используется поле edittext, однако я обнаружил, что мне это нужно с представлением автозаполнения из-за того, как установлена ​​тема моста приложений.

person Steven Elliott    schedule 18.06.2019

Благодаря этой проблеме я узнал, что это можно сделать. программно:

val autoCompleteTv = binding.yourAutoCompleteTextView
autoCompleteTv.setDropDownBackgroundDrawable(
        ColorDrawable(ContextCompat.getColor(context, R.color.your_desired_color))
)
person Emmanuel Guerra    schedule 06.07.2020
comment
Это более точный ответ здесь. - person Tarif Chakder; 15.07.2021

Вы использовали style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu" как стиль в AutoCompleteTextView.

Измените светло-серый цвет в style.xml на свой конкретный цвет.

person Pradip Vadher    schedule 18.06.2019
comment
Этот стиль определен в библиотеке компонентов материала, поэтому мне нечего менять в моем ресурсе style.xml, и я не определил этот светло-серый цвет. Чтобы иметь раскрывающийся список / счетчик с использованием макета текстового поля руководства по материалам, необходимо добавить этот стиль в TextInputLayout см. документацию - person Steven Elliott; 18.06.2019