Android - изменение цвета всплывающего диалогового окна Spinner - PullRequest
0 голосов
/ 10 мая 2018

У меня есть объект Spinner, который выглядит так:

<Spinner
    android:id="@+id/createsub_category_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:spinnerMode="dialog" />

и spinner_item.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:gravity="end"
    android:padding="5dip"
    android:textAlignment="viewEnd"
    android:textColor="#FFFFFF"
    android:textSize="18sp" />

и затем в коде:

categorySpinner = find(R.id.createsub_category_spinner)
        val categoryAdapter = ArrayAdapter.createFromResource(this,
                R.array.categories, R.layout.spinner_item)
        categorySpinner.adapter = categoryAdapter
        categorySpinner.setPopupBackgroundResource(sub.color)
        categorySpinner.setSelection(sub.category)

где я ожидаю, что setPopupBackgroundResource (sub.color) изменяет белый фон диалога по умолчанию. Но этого не происходит? Чего мне не хватает?

После некоторого дальнейшего тестирования я заметил, что код, показанный выше, работает, если у меня есть android:spinnerMode="dropdown", почему-то то же самое не применяется, когда выбран режим диалога.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Согласно документации :

Set the background drawable for the spinner's popup window of choices. Only valid in MODE_DROPDOWN; this method is a no-op in other modes.

Так что, к сожалению, это не будет работать в диалоговом режиме.

0 голосов
/ 10 мая 2018

попробуйте это ..

spinner.setPopupBackgroundResource(R.drawable.spinner_background);

и здесь spinner_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
...