以十六进制值/ColorDrawable 编程方式为按钮设置背景色调列表
setBackgroundTintList for button programmatically with a hex value / ColorDrawable
我正在尝试以编程方式设置按钮的背景色调,而不是像 here 那样设置为颜色资源,而是设置为十六进制值。目前,我已将十六进制值转换为 ColorDrawable,但不知道如何使用它通过按钮的 .setBackgroundTintList()
方法设置背景色调。请注意,这是在片段中完成的,上下文存储在名为 mContext
.
的全局变量中
ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FFFFFF"));
在 API+21
btn.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#buttonColor")));
或兼容
Drawable drawable = new ColorDrawable(Color.parseColor("color"));
// Wrap the drawable so that future tinting calls work
// on pre-v21 devices. Always use the returned drawable.
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable,Color.parseColor("colorTint"));
//or tint list
//DrawableCompat.setTintList(drawable,ColorStateList.valueOf(Color.parseColor("#ffffff")));
btn.setBackground(drawable); //apply drwable with tint to the ctn
使用 Compat 的静态函数:
ViewCompat.setBackgroundTintList(btn, ColorStateList.valueOf(Color.parseColor("#FFFFFF")));
我正在尝试以编程方式设置按钮的背景色调,而不是像 here 那样设置为颜色资源,而是设置为十六进制值。目前,我已将十六进制值转换为 ColorDrawable,但不知道如何使用它通过按钮的 .setBackgroundTintList()
方法设置背景色调。请注意,这是在片段中完成的,上下文存储在名为 mContext
.
ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FFFFFF"));
在 API+21
btn.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#buttonColor")));
或兼容
Drawable drawable = new ColorDrawable(Color.parseColor("color"));
// Wrap the drawable so that future tinting calls work
// on pre-v21 devices. Always use the returned drawable.
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable,Color.parseColor("colorTint"));
//or tint list
//DrawableCompat.setTintList(drawable,ColorStateList.valueOf(Color.parseColor("#ffffff")));
btn.setBackground(drawable); //apply drwable with tint to the ctn
使用 Compat 的静态函数:
ViewCompat.setBackgroundTintList(btn, ColorStateList.valueOf(Color.parseColor("#FFFFFF")));