为什么 Android Studio 中的 setBackgroundColor() 方法不起作用?


mButton.setBackgroundColor(Color.GREEN) ;

我用那个方法来改变按钮被点击时的颜色。在MainActivity和onCreate():mButton = (Button) findViewById( R.id.button_count);中,按钮被初始化为私有我试着将它转换为视图,但仍然不起作用。也许,它可以帮助你-当我在属性窗格中设置任何颜色时背景属性,按钮的颜色不会改变。

我想知道如何在java代码中改变背景颜色或我的程序出了什么问题。谢谢你

试试这一行:

mButton.setBackgroundColor(getResources().getColor(R.color.Green));

注意:在color.xml中定义的绿色

button.setcolorfilter(Color)在API 29中已弃用。

button.setBackgroundColor(color)与按钮样式混淆。

所以这里有一个新的方法来做到这一点使用BlendModeColorFilter(): https://developer.android.com/reference/android/graphics/BlendModeColorFilter

参见上面的文档链接。

fun setButtonColor(btn: Button, color: Int) {
if (Build.VERSION.SDK_INT >= 29)
btn.background.colorFilter = BlendModeColorFilter(color, BlendMode.MULTIPLY)
else
btn.background.setColorFilter(color, PorterDuff.Mode.MULTIPLY)
}

根据新的api,颜色过滤器工作良好。