以编程方式设置Android按钮背景

56

我想知道如何通过编程设置按钮的颜色? 我编写了以下代码,但失败了:

Button11.setBackgroundColor(R.color.red);

谢谢!!


2
你想要什么效果?一个纯红色的矩形,没有其他效果吗?如果不是,你需要一些可绘制的东西来实现你想要的效果,可以是PNG(9patch)或在XML中定义的其他内容。系统没有内置的方法来创建一个看起来像普通按钮但颜色不同的按钮。除非你只是想要一个纯色的矩形,否则你必须提供自己的资源。 - FoamyGuy
实际上我正在做的是,在一个有12个按钮的表格中,程序会随机选择其中6个按钮来填写定义好的文本。我希望这6个按钮可以变成另一种不同的颜色。在这方面,它不能在xml部分完成,而只能用编程方式实现。我已经定义了一些xml(首先未选择的是普通的绿色圆形颜色,如果被选中,我希望它变成红色圆形颜色)。如果按这种方式,它能做到吗? - pearmak
2
正确,但你需要拥有一个类似于9patch png的红色按钮图像,或者你需要在xml中定义一个红色按钮的形状。如果你只是将背景颜色改为红色,那么你最终会得到一个普通的红色矩形而不是看起来像正常按钮的东西。 - FoamyGuy
是的,你说得对。我已经进行了修改,但它只会显示一个红色的矩形,甚至无法被按下!我已经单独定义了red_button_xml,但如何将其合并到Activity中呢?非常感谢! - pearmak
1
你应该使用Button.setBackgroundResource()而不是setBackgroundColor() - FoamyGuy
android:backgroundTint="@color/button_background_color" https://www.geeksforgeeks.org/how-to-change-the-background-color-of-button-in-android-using-colorstatelist/安卓:backgroundTint =“@color/button_background_color” https://www.geeksforgeeks.org/how-to-change-the-background-color-of-button-in-android-using-colorstatelist/ - Snostorp
11个回答

0

我已经尝试过上面所有的答案,包括 setColorFiltersetBackgroundColorcolorFilter 等,但实际上没有任何作用,都只得到默认颜色。

对我有用的是使用 backgroundTintList,代码如下:

myButton.backgroundTintList = ContextCompat.getColorStateList(this, R.color.red)

或者

myButton.backgroundTintList = ColorStateList.valueOf(Color.RED)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接