【问题标题】:KitKat color problems奇巧颜色问题
【发布时间】:2016-05-12 16:33:14
【问题描述】:

我有一个使用黑色背景的应用程序。我一直在 Lollipop 上开发和测试它,但 minSDK 是 19。当我使用 KitKat 设备(或模拟器)时,我遇到了我在 Lollipop 设备上看到的白色文本的问题 - 它是黑色的,因此不可见。

我这样定义文本颜色:

<TextView
    android:id="@+id/list_header_date"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="6dp"
    android:text="27.02.2016"
    android:textColor="@color/text_primary"
    android:textSize="16dp"/>

然后,在(所有)我的 styles.xml 中,我定义了以下主题:

 <style name="AppTheme.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColorPrimary">@color/text_primary</item>
    <item name="android:background">@color/colorPrimary</item>
   </style>

在colors.xml中,text_primary的定义如下:

<color name="text_primary">#FFFFFF</color>

再一次,在 Lollipop 上,我可以看到纯白色的文本,但在 KitKat 上却显示为黑色。我哪里做错了?在我看来,由于 TextView textcolor 被明确定义为 text_primary 它应该适用于所有 SDK 版本?!

【问题讨论】:

  • @zgc7009 我知道这与我的问题有什么关系,但它并没有解决它。或者至少我无法从中获得解决方案。如果它隐藏在该线程中的某个地方,您介意向像我这样的傻瓜指出吗? :)
  • 您可能需要查看您拥有的主题类型。我认为您将需要使用某种 Theme.AppCompat.*。并不是说我是 100% 的,因为我已经有一段时间没有搞乱样式了,但我很确定 Lollipop 中设计模式的重大改革需要某种 AppCompat。此链接可能会提供更多信息(再次不确定这是一个解决方案,更多的是建议查看)stackoverflow.com/questions/20653305/…
  • 谢谢你,你是天才...如果你喜欢继续发帖作为答案。您可以包含如下代码建议:“在您的 /values-v19/styles.xml 中将 &lt;style name="AppTheme.NoActionBar"&gt; 更改为 &lt;style name="AppTheme.NoActionBar" parent="Theme.AppCompat.NoActionBar"&gt;”并获得您应得的积分。
  • 不费吹灰之力,我只是提出了一些建议。继续并发布您对代码所做的更改,以使其重新启动并作为更具体的答案运行。希望它对未来的一些人有所帮助:) 快乐编码。

标签: android android-4.4-kitkat android-styles


【解决方案1】:

感谢@zgc7009,这个问题很快就解决了:

正如他所建议的,Lollipop 中设计模式的重大改革需要某种 AppCompat。基于此,幸运的是,../values-v19/styles.xml 文件中的以下添加使 KitKat 中的文本再次显示为白色:

 <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColorPrimary">@color/text_primary</item>
</style>

注意我是如何将 AppCompat parent 添加到我的自定义样式中的。 老实说,我不确定为什么它会影响 TextViews 的颜色,如果有人知道,请随时编辑或评论。希望这对未来的几个人有所帮助。

【讨论】:

  • AppCompat 父主题包含允许属性跨版本工作的兼容性样式 :) 来自此链接 android-developers.blogspot.com/2014/10/… "When you set these attributes, AppCompat automatically propagates their values to the framework attributes on API 21+.
猜你喜欢
  • 1970-01-01
  • 2018-03-09
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
相关资源
最近更新 更多