【问题标题】:Android. How to programatically change background color of button安卓。如何以编程方式更改按钮的背景颜色
【发布时间】:2022-01-03 18:58:47
【问题描述】:

我需要以编程方式创建 Button。我的按钮可以随机着色。但是,我需要设置按钮的背景颜色以及按钮处于 PRESSED 状态时的背景颜色。

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

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

<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 按钮中:

  android:background="@drawable/selector_button"

如果您提前了解所需的背景,这是一个可行的解决方案。但是,就我而言,我正在动态获取按钮的背景(pressed_bg 和 not_pressed_bg),因此这种方法对我不起作用。是否可以通过编程方式实现这一点?

附:我需要压制效果

请帮帮我。

【问题讨论】:

  • 您想创建一个按钮,当您按下该按钮时,bg 颜色应该改变,按钮 bg 本身应该自动/随机改变,限制是 bg 颜色和背景颜色不应该相同我说对了吗?
  • 是的,我需要一个按钮,让我获得正常状态下的背景颜色和按下状态下的背景颜色。

标签: android dynamic-programming android-drawable android-button android-styles


【解决方案1】:

您可以像这样以编程方式检查和设置颜色。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-27
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 2014-12-21
      相关资源
      最近更新 更多