Я пишу приложение, которое требует следующих двух вещей:
TextView
s) должен быть одного цвета (белый, в данном случае – темный фон) Spinner
должен быть другого цвета (черный, так как белый слишком сложно читать) Я использовал тему, применяемую на уровне приложения в манифесте, для выполнения первого элемента выше.
<resources> <style name="GlobalTheme" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen"> <item name="android:textColor">#FFFFFF</item> </style> </resources>
Отлично. Кроме того, он также делает текст на прядильщике белым, который трудно читать.
Хорошо, так что я хочу, чтобы цветной ролик все еще был черным, но все остальное было белым.
Я нашел этот вопрос, который показал, как установить цвет текста Spinner, и он работает, но только тогда, когда я также не устанавливаю глобальный textColor.
Таким образом, следующее не работает:
<resources> <style name="GlobalTheme" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen"> <item name="android:textColor">#FFFFFF</item> <item name="android:spinnerItemStyle">@style/GlobalThemeSpinnerItem</item> </style> <style name="GlobalThemeSpinnerItem" parent="android:Widget.TextView.SpinnerItem"> <item name="android:textAppearance">@style/GlobalThemeTextAppearanceSpinnerItem</item> </style> <style name="GlobalThemeTextAppearanceSpinnerItem" parent="android:TextAppearance.Widget.TextView.SpinnerItem"> <item name="android:textColor">#000000</item> </style> </resources>
Наверное, я надеялся, что это будет похоже на CSS, и все будет каскадом вниз (т. Е. «Весь текст будет белым, кроме того, что находится в прядильщике»). Если я удалю строку android:textColor
в основной теме, трюк с цветовым счетчиком работает отлично.
Похоже, что SpinnerItem
проистекает из TextView
поэтому я попытался найти textViewStyle
типа textViewStyle
аналогичный разделению spinnerItemStyle
, но ему не повезло.
В отличие от большинства людей, которые спрашивают об этом, я хочу как можно больше сохранить его в XML. Кто-нибудь знает, что я делаю неправильно?
Попробуй это:
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="GlobalTheme" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen"> <item name="android:spinnerItemStyle">@style/GlobalThemeSpinnerItem</item> <item name="android:textViewStyle">@style/GlobalThemeTextViewItem</item> </style> <style name="GlobalThemeTextViewItem" parent="android:Widget.TextView"> <item name="android:textAppearance">@style/GlobalThemeTextAppearanceTextViewItem</item> </style> <style name="GlobalThemeTextAppearanceTextViewItem" parent="android:TextAppearance.Widget.TextView"> <item name="android:textColor">#FFFFFF</item> </style> <style name="GlobalThemeSpinnerItem" parent="android:Widget.TextView.SpinnerItem"> <item name="android:textAppearance">@style/GlobalThemeTextAppearanceSpinnerItem</item> </style> <style name="GlobalThemeTextAppearanceSpinnerItem" parent="android:TextAppearance.Widget.TextView.SpinnerItem"> <item name="android:textColor">#000000</item> </style>
Это сделает текст в тексте TextViews белым, а текст в черном – Spinners.