【问题标题】:How to dynamically change a pressed button background color?如何动态更改按下按钮的背景颜色?
【发布时间】:2010-10-24 17:19:46
【问题描述】:

我正在开发一个问题游戏,我想在用户按下按钮的那一刻将按下答案按钮的背景颜色更改为绿色(如果答案正确)或红色(如果答案错误)。

实际上我有一个 custom_button.xml 分配给布局中的按钮:

        <Button 
        android:id="@+id/la"
        android:width="63dp"
        android:height="65dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/la"
        android:tag="@string/la"
        android:layout_toRightOf="@+id/fa"
        **android:background="@drawable/custom_button"**
        android:layout_margin="3dp"
    />  

有没有办法在用户按下按钮的那一刻改变按钮的按下背景?

我尝试在按钮 OnClickListener 中使用 setBackgroundDrawable() 但这会改变用户下次单击按钮时的按钮行为,而不是实际的。

bt.setBackgroundDrawable(getResources().getDrawable(R.drawable.custom_button_fail));

提前致谢!

【问题讨论】:

    标签: android


    【解决方案1】:

    我尝试在按钮 OnClickListener 中使用 setBackgroundDrawable() 但这会改变用户下次单击按钮时的按钮行为,而不是实际的。

    这是因为在按下按钮后调用了onClick 方法。您最好的选择是:

    1. 为您的按钮创建两个不同的可绘制对象。第一个是普通按钮,未按下时具有正常背景,按下时具有绿色背景。第二个普通按钮,未按下时具有正常背景,按下时具有红色背景。
    2. onCreate 上,根据答案是否正确,为按钮分配正确的背景。

    顺便说一下,有一个更短的方法:

    bt.setBackgroundResource(R.drawable.custom_button);
    

    【讨论】:

    • +1,非常感谢您,您通过 SetBackgroundResource 方法在我的脑海中点亮了灯,我对此一无所知。谢谢
    猜你喜欢
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2023-03-16
    • 2023-04-01
    • 2015-11-22
    • 2021-02-23
    • 2015-06-04
    相关资源
    最近更新 更多