我有一个白色背景的应用小部件。一些显示的文字使用?android:textColorPrimary
,一些使用?android:textColorSecondary
,一些使用我定义的颜色。为什么?android:textColorPrimary在不同的API版本中获得不同的值?
由于某些原因,当我在预先牛轧糖(24或更低)上运行我的应用程序时,颜色是白色的,使得文本在白色背景上不可见,但任何24和更高显示为黑色或灰色。我定义的颜色总是可以的。
另外有趣的是,应用程序小部件中的代码几乎与实际应用程序相同(都显示项目列表),应用程序版本(即使在这些较旧的API上)也使用深色,但由于某种原因小部件为文本选择白色。
如果我穿过的款式,我得到这个XML代码追踪:
<!-- The most prominent text color. -->
<attr name="textColorPrimary" format="reference|color" />
这是什么意思?它如何知道最突出的文本颜色是什么?为什么它在小部件和应用程序中有所不同,为什么只在较旧的API版本上才有所不同?
有什么我可以做些什么来解决这个以便它是否一致?我使用相同的主题。为什么会发生?
注意:只要设置一个特定的颜色,这不是我要求的。当然,我可以将文字设置为黑色或其他颜色,但我希望使用这些样式,以便将来可以根据需要更改颜色,尤其是因为我使用的是日/夜主题。也许它与此有关?好吧,我尝试了一个正常的主题,但问题仍然存在(文本在小部件上不可见 - 只有小部件 - 在API 24以上)。
请让我知道,如果有不清楚的地方,我会更新的问题。谢谢。
由于不同的操作系统版本使用不同的主题。 –
你能更具体一点吗?为什么对于应用程序小部件而言,主题与同一操作系统版本的应用程序不同?我只使用appCompat主题。好吧,无论如何这都是主题。一定。只是不知道是什么。 –
不确定。但是我从Windows桌面借用了一个老技巧(解决方法!):**阴影**(按照向右和向右移动,所以灯光来自左上角,如预期的那样)。白色背景上的白色文字由于黑色(黑色)阴影仍然可见。黑色屏幕上的影子几乎看不见,只留下文字。 –