我正面临一个奇怪的问题,我将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
我想也许是因为我的设备显示不同的颜色或其他东西,所以我尝试了更多的全息颜色,但它们看起来都应该是它们应该
@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个所谓的相等颜色代码产生不同的结果,为什么所有其他全息颜色看起来都正常?
设备信息:
OnePlus One
型号A0001
运行Cyanogen OS v11.0-XNPH05Q /内核3.4.0-cyanogenmod-gc73a4ec build 04
运行Android 4.4.4
答案 0 :(得分:6)
标准Android 4.4.4中holo_blue_bright
的十六进制代码为ff00ddff
(Source)。
您获得的绿色实际上是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.我打赌那里的颜色是正确的。