Измените цвет маленького треугольника на spinner в android

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

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

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

Solutions Collecting From Web of "Измените цвет маленького треугольника на spinner в android"

Чтобы получить правильные изображения, вы можете перейти на сайт Android Asset Studio и выбрать генератор сигналов голосовой подсветки Android . Это создаст все необходимые вам активы, включая «треугольник». Он также генерирует XML-файлы, которые реализуют изменения.


Вот примеры файлов XML:

Пользовательский цвет:

<?xml version="1.0" encoding="utf-8"?> <resources> <color name="apptheme_color">#33b5e5</color> </resources> 

Custom Spinner Стиль:

 <?xml version="1.0" encoding="utf-8"?> <!-- Generated with http://android-holo-colors.com --> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="SpinnerAppTheme" parent="android:Widget.Spinner"> <item name="android:background">@drawable/apptheme_spinner_background_holo_light</item> <item name="android:dropDownSelector">@drawable/apptheme_list_selector_holo_light</item> </style> <style name="SpinnerDropDownItemAppTheme" parent="android:Widget.DropDownItem.Spinner"> <item name="android:checkMark">@drawable/apptheme_btn_radio_holo_light</item> </style> </resources> 

Тема пользовательского приложения:

 <?xml version="1.0" encoding="utf-8"?> <!-- Generated with http://android-holo-colors.com --> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppTheme" parent="@style/_AppTheme"/> <style name="_AppTheme" parent="Theme.AppCompat.Light"> <item name="android:spinnerStyle">@style/SpinnerAppTheme</item> <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItemAppTheme</item> </style> </resources> 

Как вы можете видеть, есть также много ссылок, на которые ссылаются эти стили.

Вот один из тех, которые относятся к «треугольнику», который вы хотите изменить:

 <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2010 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:drawable="@drawable/apptheme_spinner_disabled_holo_light" /> <item android:state_pressed="true" android:drawable="@drawable/apptheme_spinner_pressed_holo_light" /> <item android:state_pressed="false" android:state_focused="true" android:drawable="@drawable/apptheme_spinner_focused_holo_light" /> <item android:drawable="@drawable/apptheme_spinner_default_holo_light" /> </selector> 

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


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

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

  • Android: Пользовательские спиннинг от Tom Gersic

Я все равно рекомендую прочитать его, потому что он очень хорошо объясняет этот процесс и поможет вам понять остальную часть моего ответа.

Лучшее и простое решение:

 spinner.getBackground().setColorFilter(getResources().getColor(R.color.red), PorterDuff.Mode.SRC_ATOP); 

Другое решение (спасибо Саймону), если вы не хотите менять все Spinners:

 Drawable spinnerDrawable = spinner.getBackground().getConstantState().newDrawable(); spinnerDrawable.setColorFilter(getResources().getColor(R.color.red), PorterDuff.Mode.SRC_ATOP); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { spinner.setBackground(spinnerDrawable); }else{ spinner.setBackgroundDrawable(spinnerDrawable); } 

С Lollipop on вы можете установить оттенок фона на xml ,

 android:backgroundTint="@color/my_color" 

Просто сделай так, как это. Это поможет вам решить вашу проблему.

 <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="spinner background image"> <Spinner android:layout_width="match_parent" android:layout_height="match_parent" android:background="@null"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:src="arrow image" /> </RelativeLayout> 

или

Просто посмотрел ответ, который я дал для другого запроса: Custom Spinner

Решение для минимальной версии SDK 14. Вы можете использовать AppCompatSpinner из библиотеки поддержки:

 AppCompatSpinner spinner = (AppCompatSpinner) view.findViewById(R.id.my_spinner); spinner.setSupportBackgroundTintList(ContextCompat.getColorStateList(context, R.color.my_color));