【发布时间】: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_light 或holo_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 是正确的,您的设备制造商可能应用了他们自己的主题或其他东西(?)
-
我现在知道了,但是当我问这个问题时我不知道是什么原因