如何动态更改按下的按钮背景颜色?

Fer*_*rCa 2 android

我正在开发一个问题游戏,如果答案是正确的话我想将答案按钮按下背景颜色变为绿色,或者如果在用户按下按钮时答案错误则将红色变为红色.

实际上我有一个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"
    />  
Run Code Online (Sandbox Code Playgroud)

有没有办法在用户按下按钮时更改按钮的按下背景?

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

bt.setBackgroundDrawable(getResources().getDrawable(R.drawable.custom_button_fail));
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Cri*_*ian 6

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

那是因为在onClick按下按钮后调用该方法.这里你最好的选择是:

  1. 为您的按钮创建两个不同的drawable.正常按钮的第一个按钮,当没有按下时具有正常背景,按下时为绿色背景.第二个是正常按钮,没有按下正常背景,按下红色背景.
  2. onCreate分配正确的背景,这取决于答案是否正确与否的按钮.

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

bt.setBackgroundResource(R.drawable.custom_button);
Run Code Online (Sandbox Code Playgroud)