我是一个相对较新的Android开发人员,我注意到我希望有人能解释这对我来说似乎很奇怪。我有LinearLayout ll。

这行代码在执行时对我而言失败:

ll.setBackgroundColor(R.color.white);

但是,以下代码行有效:
ll.setBackgroundResource(R.color.white);

我认为这仅仅是因为我在资源中定义了白色。但是,我也尝试在setBackgroundColor()中传递0xFFFFFF,但这也不起作用。

与我的TextView文本类似,这行代码在执行时失败:
text.setTextColor(R.color.white);

我可以看到我的TextView,所以我知道我正确地对其进行了初始化(例如我也可以看到的LinearLayout)。所以我想我的问题可以归结为:如何正确使用LinearLayout.setBackgroundColor()和TextView.setTextColor()?

在此先感谢一吨。我已经阅读了文档,并尝试通过谷歌搜索在线查找信息,但没有提出任何建议。

最佳答案

R.color.whatever是一个int。它是作为对外部定义(XML)资源的引用而自动生成的。当您使用此整数调用setBackgroundColor时,它将尝试将此int的值解析为Color。 setBackgroundResource期望获得传递给它的资源整数。它检索外部定义的值,然后以这种方式应用颜色。至于setBackgroundColor,请尝试使用包含alpha的完整十六进制值颜色,例如0xFFFFFFFF(其中前两个F值为alpha值)。

编辑:被马克殴打! :P

10-04 17:38