【问题标题】:Blue Holo colors appear green on device蓝色 Holo 颜色在设备上显示为绿色
【发布时间】:2015-04-10 16:58:43
【问题描述】:

我遇到了一个奇怪的问题,我将 TextView 的背景设置为 @android:color/holo_blue_bright,期望它是亮蓝色,结果发现它是某种亮的 绿色一个设备。

XML

<TextView
    android:id="@+id/tv_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="@drawable/chat_bubble"
    android:maxWidth="300dp"
    android:padding="5dp"
    android:singleLine="false"
    android:textSize="16sp" />

@drawable/chat_bubble

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/chat_bubble_background" />

    <corners android:radius="5dp" />
</shape>

colors.xml(只是相关行)

<color name="chat_bubble_background">@android:color/holo_blue_bright</color>

以上设置会产生这种情况。每条消息都是一个TextView

我想可能是因为我的设备显示颜色不同或其他原因,所以我尝试了更多全息颜色,但它们看起来都完全符合它们应该的样子

@android:color/holo_green_light 给予

@android:color/holo_green_dark 给予

即使是 @android:color/holo_orange_light@android:color/holo_purple 看起来也不错

除了蓝色的:

@android:color/holo_blue_light 给予

@android:color/holo_blue_dark 给予

所有蓝色看起来都相似,但绿色的色调并不完全相同。与holo_green_lightholo_green_dark 的绿色也不一样。

我想这是什么?一切看起来都不错,但不是蓝色的? 然后去检查 holo_blue_bright 的 HEX 是什么,我发现它是 here(它是 #FF00DDFF)。
所以我尝试直接使用 HEX 值,而不是使用预定义的全息颜色。

Android Studio (v1.2) 告诉我它们的颜色与我预期的完全相同。

但是,当我后来改变时

<solid android:color="@color/chat_bubble_background" />

<solid android:color="@color/chat_bubble_background2" />

要使用#FF00DDFF 作为颜色,我知道了

这正是我在使用holo_blue_bright 时所期望看到的!考虑到它们是相同的颜色,这应该是有道理的。

我被难住了。这里发生了什么,我错过了什么?为什么 2 个本应相等的颜色代码会产生不同的结果,为什么所有其他全息颜色看起来都正常?


设备信息:

一加一
型号 A0001
运行 Cyanogen OS v11.0-XNPH05Q / 内核 3.4.0-cyanogenmod-gc73a4ec build 04
运行 Android 4.4.4

【问题讨论】:

  • 哇,您在多个设备和操作系统版本上看到相同的结果?
  • 遗憾的是我只有一台设备可以测试,它是 Android 4.4.4
  • 做 getResources().getColor(android.R.color.holo_blue_bright); 会很有趣在代码中并打印十六进制值,
  • 如果您想 100% 控制颜色,使用私有资源(就像您所做的那样)是最好的方法。您的 SDK 是正确的,您的设备制造商可能应用了他们自己的主题或其他东西(?)
  • 我现在知道了,但是当我问这个问题时我不知道是什么原因

标签: android colors


【解决方案1】:

标准 Android 4.4.4 中 holo_blue_bright 的十六进制代码是 ff00ddff (Source)。

你得到的绿色实际上是user_icon_6的值,被描述为“浅绿色500”(Source)。

您的设备制造商似乎通过将默认值替换为其他颜色(有意或无意)来自定义调色板。这意味着 holo_blue_bright 在您的自定义 Android 版本中是这样定义的:

<color name="holo_blue_bright">#ff8bc34a</color>


现在您提供了设备信息,我查找了the source of CM11。定义的颜色是ff00ddff正确。但是,OnePlus 开发了他们自己的 Cyanogen OS 版本,因此他们可能已经更改了颜色的值。遗憾的是,我找不到 CM11-XNPH05Q 的源代码,所以我只能猜测。

我建议你直接向一加询问这个问题。

【讨论】:

  • 有趣。 OnePlus 从今天开始推出 Cyanogen 12,它可能会被修复,对吧?
  • @TimCastelijns 我会等待更新并再次检查问题。也许他们修复了错误(如果不是故意的),否则您可以就问题与他们联系。
  • 你是对的。它是 cyanogen 的 Lush 主题中的自定义覆盖。更新到 cyanogen 12 后我仍然看到它,但是当我尝试新主题时,我注意到每个主题的颜色都是亮蓝色,但不是 Lush
【解决方案2】:

根据您上面的评论

@CSmith 它给了我 ff8bc34a,看起来就像我看到的那种绿色。为什么 Android Studio 会告诉我它是 ff00ddff 呢?

很明显,制造商已经改变了设备的颜色。 Android Studio 为您提供 SDK 中官方 android 资源中的颜色值。

在模拟器中试用您的应用,例如Nexus 5。我敢打赌那里的颜色会是正确的。

【讨论】:

    猜你喜欢
    • 2020-06-10
    • 2011-10-28
    • 1970-01-01
    • 2012-04-25
    • 2016-04-17
    • 2020-09-11
    • 1970-01-01
    • 2014-08-26
    • 2015-09-29
    相关资源
    最近更新 更多