我在下面一行中更改按钮的BackgroundTintList属性。
myButton.setBackgroundTintList(getColorStateList(R.color.green));
结果,我的按钮将其颜色从灰色更改为绿色,这就是我想要实现的目标。
我的问题是,稍后我想重新设置按钮的原始灰色,但是我不知道该怎么做。我试图在代码的开头(在更改它之前)获取按钮的BackgroundTintList属性,但是以下行返回NULL
ColorStateList buttonBackgroundTint = myButton.getBackgroundTintList();
将BackgroundTintList设置为绿色后,将其设置为NULL会将我的按钮更改为白色,而不是默认的灰色。
将按钮再次设置为灰色的方式是什么?
答案 0 :(得分:1)
您可以尝试以下行:
myButton.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#d8d8d8")));
如果您想将按钮的颜色改回其默认/原始颜色。
答案 1 :(得分:0)
我还没有找到轻松实现此目的的任何方法。我可以完成目标的唯一方法是保留原始背景Drawable
,为其创建一个副本,手动为该副本着色,然后在这些新的可绘制对象之间来回交换。
private Drawable original;
private Drawable tinted;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
this.original = button.getBackground();
this.tinted = button.getBackground().getConstantState().newDrawable().mutate();
ColorStateList custom = getResources().getColorStateList(R.color.my_button, getTheme());
tinted.setTintList(custom);
...
}
然后,我可以写button.setBackground(original)
或button.setBackground(tinted)
在两者之间交换。
答案 2 :(得分:0)
我刚刚创建了一个新的Button
并获得了backgroundTintList
actionSearch.backgroundTintList = MaterialButton(requireContext()).backgroundTintList