Как можно создать глобальную тему с разными цветами текста TextView и Spinner?

Я пишу приложение, которое требует следующих двух вещей:

  • Общий текст (в 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.

Intereting Posts
Есть ли способ поделиться одним и тем же LayoutManager между несколькими вложенными RecyclerViews Как сохранить данные из службы Android? Ошибка обновления TextView из метода запуска TimerTask Создание пузырьков с жестами / Движения, такие как приложение Apple Music в Android Аутентификатор учетной записи Android Xamarin.Forms салфетки распознавания жестов Как я могу сделать свой Android SwipeableCardView больше похожим на почтовое приложение IOS 7 (проведите по экрану, чтобы показать кнопки) Что означает RC_SIGN_IN в googleplus login Рекламные баннеры Admob и межстраничные объявления не загружаются при запуске Все ли Android-устройства содержат все предыдущие версии SDK? Наложенные элементы галереи перекрываются Не удается разрешить проверку методаSelfPermission Уведомлять пользователя в приложении о доступности новой версии Как ускорить работу Android Studio на Mac Не найден ресурс, который соответствует указанному имени '@ style / Theme.AppCompat.Light'