在Android Studio中使用Hex颜色代码设置背景颜色:.setBackgroundColor

16
View targetView;
targetView = (View)findViewById(R.id.mainlayout);

这可行,但是

targetView.setBackgroundColor(Color.parseColor("#FFFFFF"));

而且这个也不起作用

targetView.setBackgroundColor(Color.pasrsehexString("#FFFFFF"));

错误:无法解析方法'parseColor(java.lang.String)'

还有:无法解析方法'pasrsehexString(java.lang.String)'

请问可以有人帮我吗?顺便说一下,我正在使用Android Studio。


重建/清理您的项目。 - Simas
请确保已导入android.graphics.Color而不是java.awt.Color - Tom
@Tom:你能删除你的评论并把它改成回答吗?Linus:在android.graphics.Color中没有pasrsehexString方法。但是,有一个parseColor方法,正如Tom指出的那样,这是正确导入Android的类。 - ChuongPham
4个回答

58

Java/Android 中有两个主要用于颜色处理的类。

第一个来自于 "纯" Java,可以在 java.awt.Color 中找到。 该类支持使用方法decode将字符串转换为颜色。 例如:

Color red = Color.decode("#FF0000");
第二个类是针对Android的,可以在android.graphics.Color中找到。 可以使用方法parseColor进行转换。
int red = Color.parseColor("#FF0000");

所以你应该检查你的项目导入了哪种Color类。我建议在你的情况下使用Android版本的Color。如果你已经这样做了,语句targetView.setBackgroundColor(Color.parseColor("#FFFFFF"));就应该能够工作。


8
在资源文件color.xml中定义您的颜色。
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="yourColor">#FFFFFF</color>
</resources>

并设置背景颜色

targetView.setBackgroundResource(R.color.yourColor)  

这可能会有所帮助:Color.xml

1
setBackgroundColor 不接受资源 ID,而是需要 RGBA 编码的颜色。您需要手动解决这个问题。 - A.H.

5

无需在代码中解析字符串颜色。

如果您想在代码中硬编码颜色值(而不使用FreshD答案中的颜色资源),可以使用int字面量。例如:

targetView.setBackgroundColor(0xffffffff);

颜色在ARGB中的位置。


4
如果您使用 Kotlin,以下方法可以帮助您,无需导入任何额外的库。
1- 直接使用 0X(So-So):
dialogMiddleButton.setBackgroundColor(0XF00092)

2- 使用Color.parseColor,示例如下:(最佳实践)

dialogCardView.setCardBackgroundColor(Color.parseColor("#F06292"))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接