Как я могу изменить цвет маленького треугольника в нижнем правом углу прядильника, как показано на изображении? Сейчас он показывает серый цвет по умолчанию. как это
Как я могу изменить цвет маленького треугольника в нижнем правом углу прядильника, как показано на изображении? Сейчас он показывает серый цвет по умолчанию. как это
Чтобы получить правильные изображения, вы можете перейти на сайт Android Asset Studio и выбрать Android Holo Colors Generator. Это создаст все необходимые вам ресурсы, включая "треугольник". Он также генерирует XML файлы, которые реализуют изменения.
Вот примеры файлов XML:
Пользовательский цвет:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="apptheme_color">#33b5e5</color>
</resources>
Пользовательский стиль 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>
Я не думаю, что это подходящее место для полного списка всех файлов, так как вы можете получить их все непосредственно из ссылочного инструмента.
Примечание.. Это способ разместить ваше приложение так, чтобы все прядильщики были обновлены до пользовательского стиля.
Если вы ищете быстрый и грязный способ изменить только один счетчик, ознакомьтесь с этой статьей, на которую ссылается Рики в своем комментарии:
Я все равно рекомендую прочитать его, потому что он очень хорошо объясняет этот процесс и поможет вам понять остальную часть моего ответа.
Лучшее и простое решение:
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>
или
Просто посмотрел ответ, который я дал для другого запроса: Пользовательский счетчик
Решение для минимальной версии SDK 14. Вы можете использовать AppCompatSpinner из библиотеки поддержки:
AppCompatSpinner spinner = (AppCompatSpinner) view.findViewById(R.id.my_spinner);
spinner.setSupportBackgroundTintList(ContextCompat.getColorStateList(context, R.color.my_color));
Вот еще один способ решить эту программную задачу. (Протестировано по API 19 и выше).
Используйте ViewCompat
для этого.
ViewCompat.setBackgroundTintList(spinner, ColorStateList.valueOf(your_color));
Использование spinner.setSupportBackgroundTintList
вызывает ошибку