蓝色Holo颜色在设备上显示为绿色

时间:2015-04-10 16:58:43

标签: android colors

我正面临一个奇怪的问题,我将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" />

@绘制/ 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

enter image description here

我想也许是因为我的设备显示不同的颜色或其他东西,所以我尝试了更多的全息颜色,但它们看起来都应该是它们应该

@android:color / holo_green_light 给出

enter image description here

@android:color / holo_green_dark 给出

enter image description here

即使 @android:color / holo_orange_light @android:color / holo_purple 看起来还行

enter image description here

enter image description here

除了蓝色的那些:

@android:color / holo_blue_light 给出

enter image description here

@android:color / holo_blue_dark 给出

enter image description here

所有蓝色都显示为相似,但不是完全相同的绿色。与holo_green_lightholo_green_dark不同,绿色也不同。

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

enter image description here

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

然而,当我改变了

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

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

使用#FF00DDFF作为颜色,我得到了这个

enter image description here

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

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


设备信息:

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

2 个答案:

答案 0 :(得分:6)

标准Android 4.4.4中holo_blue_bright的十六进制代码为ff00ddffSource)。

您获得的绿色实际上是user_icon_6的值,其被描述为&#34;浅绿色500&#34; (Source)。

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

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

<小时/> 既然您提供了设备信息,我查了the source of CM11。定义的颜色为ff00ddff,这是正确的。但是,OnePlus开发了自己的Cyanogen OS版本,因此他们可能已经改变了颜色的值。可悲的是,我无法找到CM11-XNPH05Q的源代码,所以我只能猜测。

我建议您直接向OnePlus询问此问题。

答案 1 :(得分:1)

从上面的评论中

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

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

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