Answers:
您使按钮透明。第一个字节是字母。
尝试 v.setBackgroundColor(0xFF00FF00);
0xff00ff00
,正是因为同样的什么建议的答案,但它也有被利益人类可读。大多数开发人员更喜欢人类可读的解决方案。
调用setBackgoundColor时,它将覆盖/删除任何现有的背景资源,包括任何边框,角,填充等。您要做的是更改现有背景资源的颜色...
View v;
v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN);
试用PorterDuff.Mode。*可获得不同的效果。
几种选择可以做到这一点...
将背景设置为绿色:
v.setBackgroundColor(0x00FF00);
使用Alpha将背景设置为绿色:
v.setBackgroundColor(0xFF00FF00);
使用Color.GREEN常量将背景设置为绿色:
v.setBackgroundColor(Color.GREEN);
在Colors.xml中将背景设置为绿色定义
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="myGreen">#00FF00</color>
<color name="myGreenWithAlpha">#FF00FF00</color>
</resources>
并使用:
v.setBackgroundResource(R.color.myGreen);
和:
v.setBackgroundResource(R.color.myGreenWithAlpha);
或较长的缠绕:
v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreen));
和:
v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreenWithAlpha));
getResources().getColor(...)
有过时stackoverflow.com/questions/31842983/...
v.setBackgroundResource(R.color.myGreen);
使用时colors.xml
v.setBackgroundColor(0x00FF00);
只是他们说的代码不起作用。我也希望它是透明的。
您可以使用以下方法将十六进制颜色设置为任何资源:
View.setBackgroundColor(Color.parseColor("#e7eecc"));
以及在任何视图上更改背景颜色的正确方法是什么?
在任何 View
?您所拥有的是正确的,尽管您应该挂断invalidate()
电话。
但是,有些Views
已经有背景。Button
例如,A 已经具有背景:按钮本身的表面。此背景是StateListDrawable
,您可以在中找到android-2.1/data/res/drawable/btn_default.xml
在Android SDK安装中。这又是指一堆9补丁位图图像,可以以多种密度使用。您需要克隆并修改所有这些内容才能实现您的绿色目标。
简而言之,您最好能找到另一个UI模式,而不是尝试更改a的背景Button
。
我在API最小值16,目标23中使用
Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button);
WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));
mButton.setBackgroundColor(getResources().getColor(R.color.myColor));
与Android 6一起使用ContextCompact
view.setBackgroundColor( ContextCompat.getColor(this, R.color.your_color));
您可以简单地使用:
view.setBackgroundColor(Color.rgb(0, 198, 255));
在kotlin中,您可以这样操作:
val backgroundColor = R.color.whatever_color_you_like
view.setBackgroundColor(getColorCompat(backgroundColor))
getColorCompat()
扩展功能在哪里:
/**
* Extension method to provide simpler access to {@link ContextCompat#getColor(int)}.
*/
fun Context.getColorCompat(color: Int) = ContextCompat.getColor(this, color)
让我们假设我们有一个原色的values=>colors.xml
为:
<resources>
<color name="primary">#FDD835</color>
</resources>
因此,如果我们要使用自定义颜色,setBackgroundColor(@ColorInt int Color)
则只需要@SuppressLint("ResourceAsColor")
带有构造函数/方法的注释即可,该注释将用作:
@SuppressLint("ResourceAsColor")
public _LinearLayout(Context context) {
super(context);
// Formatting our layout : )
super.setBackgroundColor(R.color.primary);
....
}
您必须int
在参数中传递。
第一个例子:
view.setBackgroundColor(-500136)
第二个例子:
int colorId = R.color.green;
view.setBackgroundResource(colorId);