安卓系统.如何用程序改变按钮的背景颜色



我需要用程序创建Button。我的按钮可以随意着色。然而,我需要设置按钮的背景颜色,以及按钮处于按下状态时的背景颜色。

也就是说,按钮在正常状态下的背景颜色应该与用户按下按钮时的背景颜色不同。

例如,当我需要一个不同的按钮背景时,根据状态,我使用一个选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_not_pressed" android:state_pressed="false" />
<item android:drawable="@drawable/shape_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/shape_not_pressed" />
</selector>

在我的xml for按钮中:

android:background="@drawable/selector_button"

如果你事先知道你需要的背景,这是一个可行的解决方案。然而,在我的情况下,我正在动态地获取按钮的背景(pressed_bg和not_pressed_bg(,因此这种方法对我不起作用。有可能通过编程实现吗?

附言:我需要压制效果

请帮帮我。

您可以像这样通过程序检查和设置颜色。

if(someButton.isPressed){
val pressedRandomColor = getPressedRandomColor()
someButton.setBackgroundColor(pressedRandomColor)
}else {
val randomColor = getRandomColor()
someButton.setBackgroundColor(randomColor)
}

getPressedRandomColor((和getRandomColor[((的逻辑需要您自己定义,它应该返回Int值。

您可以创建一个颜色代码列表,并在单击按钮时随机传递颜色代码以设置按钮背景颜色。

yourButton.setBackgroundColor(Color.parseColor("#0060AB"));

最新更新