【发布时间】:2017-04-07 21:38:18
【问题描述】:
这可能是有史以来最简单的事情,但我这辈子还没有弄清楚。
我有一个设置布局背景颜色的方法,但我想像处理可绘制资源一样将颜色作为参数传递。例如
public void setIcon (Drawable icon){
this.icon = context.getResources().getDrawable(icon);
}
setIcon(R.drawable.tuborg);
我希望能够用color (R.color.id) 做类似的事情。我试过了
public void setColor (Color color){
layout.setBackgroundColor(context.getResources().getColor(color));
}
和
public void setColor (Color color){
layout.setBackgroundColor(ContextCompat.getColor(color));
}
两者都要求 int,即使 (int color) 也不起作用。另外,我试图避免使用 Color.parse()。
这就是我使用函数的方式
setColor(R.color.colorAccent);
我有一个带有各种颜色代码的 xml。我希望能够调用这个函数并获得背景颜色的变化。
【问题讨论】:
-
public void setColor(int color) { layout.setBackgroudColor(color); }
-
感谢@Bhavnik,但这不起作用。我在问题中说过......
-
您正在为 layout.setBackgroundColor 赋值,而不是直接设置颜色不起作用??
-
你快到了。你不需要
Color- 颜色实际上表示为int(注意getColor 返回一个int 而setBackgroundColor 接受一个int),但可能令人困惑的是getColor如何也接受一个int 作为参数 - 它的期望 xml 中定义的颜色的资源 ID。所以你可以简单地传递resourceID并在其上使用getColor,或者,你可以传递颜色本身(作为一个int)并直接在其上使用setBackgroundColor。 -
那么我如何在函数@trooper 中传递它
标签: java android android-linearlayout background-color