Цвет подчеркивания Android Spinner

Я могу добавить подчеркивание в счетчик, используя style="@style/Base.Widget.AppCompat.Spinner.Underlined". Как изменить цвет подчеркивания, используя только стиль? Я не хочу использовать какой-либо файл для рисования, чтобы изменить это.

 <item name="colorControlHighlight">@color/colorAccent</item>
 <item name="colorControlNormal">@color/colorAccent</item>

Используя вышеуказанный стиль, он подчеркивает только то, что пользователь нажимает на него. Не меняет цвет подчеркивания в обычном состоянии.


person Bhoomika Brahmbhatt    schedule 09.05.2016    source источник


Ответы (3)


По умолчанию Spinner будет использовать цвет, установленный с помощью android:textColorSecondary или colorControlNormal в вашем AppTheme. Так что либо установите там соответствующие цвета, либо определите новую тему и примените ее к своему Spinner:

Пример:

styles.xml

<style name="ThemeSpinner">
    <!-- Color when pressed -->
    <item name="colorAccent">#ffa000</item>
    <!-- Default color for the dropdown arrow and line -->
    <item name="colorControlNormal">#ffc107</item>
</style>

layout.xml

<Spinner
    style="@style/Widget.AppCompat.Spinner.Underlined"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeSpinner" />

Примечание. Стрелка раскрывающегося списка также будет окрашена — я не знаю, как отдельно раскрасить стрелку

person reVerse    schedule 09.05.2016
comment
Это не сработает, если Spinner находится внутри ScrollView. - person IgorGanapolsky; 17.09.2016
comment
а как насчет красного цвета для ошибки? Есть ли способ получить его? - person kingston; 30.09.2016
comment
@kingston Честно говоря, я никогда не видел Spinner с состоянием ошибки - person reVerse; 30.09.2016
comment
Просто попробуйте добавить новую учетную запись в любое из приложений Google. Он спросит у вас дату рождения. Введите неверную дату и нажмите «Далее»... - person kingston; 30.09.2016
comment
Я задал вопрос об этом: stackoverflow.com/questions/ 39792721/ - person kingston; 30.09.2016
comment
Работает ОТЛИЧНО с этой реализацией стиля: stackoverflow.com/questions/9476665/ - person J A S K I E R; 22.02.2021

Кажется, на этот вопрос уже был дан ответ. Но вот способ решить это и программно. (Протестировано на API 19 и выше).

Используйте для этого ViewCompat.

ViewCompat.setBackgroundTintList(spinner, ColorStateList.valueOf(your_color));
person sud007    schedule 25.10.2017
comment
он применяет цвет, но неожиданным образом, потому что он применяет его поверх исходного цвета - person Angelina; 10.10.2019
comment
Это сработало для меня, когда я в последний раз пытался, но, возможно, потребуется немного поиграть с вашим пользовательским интерфейсом, потому что библиотеки и компоненты Android Compat изменились с тех пор, как я в последний раз использовал. - person sud007; 10.10.2019

Добавь это в спиннер

android:backgroundTint="@color/gray"
person Ananta Prasad    schedule 25.03.2019