Настройка темы приложения textColor на белый приводит к тому, что текст меню контекстного меню будет белым (невидимым)

Хорошо, это меня заводит. Чтобы скрыть свое приложение, я задал следующее в моей теме:

<item name="android:textColor">#FFFFFF</item>

Весь текст в приложении становится белым, если только я не переопределяю его вручную в макете xmls. Отлично, yay, легкий peasy. ЗА ИСКЛЮЧЕНИЕМ, что текст в моих опциях меню для контекстных меню (вне списков и т.д.) Также решил стать белым.

Это не так здорово, так как трудно читать белый на белом. Я пробовал различные решения, в том числе поиск того, как изменить цвет текста в контекстном меню (без кубиков) и создать элемент textAppearance в моей теме. Последнее решение не изменило все текстовые поля в моем приложении, что разочаровывало.

Итак, какие-то предложения? Надеюсь, моя дилемма понятна.

Ответ 1

В вашем файле styles.xml попробуйте переопределить textViewStyle, а не только ВСЕ атрибуты textColor:

<style name="Theme.Blundell.Light" parent="@android:style/Theme.NoTitleBar">
    <item name="android:windowBackground">@drawable/background_light</item>
    <item name="android:textViewStyle">@style/Widget.TextView.Black</item>
</style>

<style name="Widget.TextView.Black" parent="@android:style/Widget.TextView">
    <item name="android:textColor">#000000</item>
</style>

Вы даже можете взять его еще один и просто переопределить цвет для определенного вида, например, кнопки:

<style name="Widget.Holo.Button" parent="@android:style/Widget.Holo.Button">
    <item name="android:textColor">#FFFFFF</item>
</style>

<style name="Theme.Blundell" parent="@android:style/Theme.Holo.NoActionBar">
    <item name="android:colorBackground">@android:color/transparent</item>
    <item name="android:buttonStyle">@style/Widget.Holo.Button</item>
</style>

Если вы вдохновили больше заниматься темой, проверьте источник Android, это лучшее место, чтобы понять, что вы можете и чего не можете сделать:

https://github.com/android/platform_frameworks_base/tree/master/core/res/res/values

Ответ 2

Используйте это:

parent="Theme.AppCompat.Light.DarkActionBar"