1

我的 Android 应用程序上有一个静音按钮。我希望它有 2 个状态:1. 声音开启 2. 声音关闭

每个州都有不同的背景:

声音开启

关闭声音

因此,当按下时,我希望显示并保持声音关闭图像。当第二次按下时,我希望再次显示 Sound On 图像。

到目前为止,这是我的代码:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/soundoff"></item>
<item android:state_checked="true" android:drawable="@drawable/soundoff"></item>
<item android:drawable="@drawable/soundon"></item>

</selector>

我遇到的问题是,尽管在选择按钮时背景会发生变化,但我希望保持该背景直到下一次选择。

4

2 回答 2

1

好的,我已经解决了这个问题。我没有参考可绘制的 xml 来修改按钮状态,而是在类本身中编写了以下代码,现在给出了所需的结果。

dmute.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
      if(!mutestatus){
        mutestatus = true;
        dmute.setBackgroundResource(R.drawable.soundoff);
      }
      else {
        mutestatus = false;
        dmute.setBackgroundResource(R.drawable.soundon);
      }
  }});

感谢所有帮助过的人。

于 2013-01-10T14:18:13.567 回答
0

您确定按钮的选中状态正在更改吗?另外我认为你的选择器应该看起来更像这样。

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:state_checked="false" android:drawable="@drawable/soundoff_pressed"></item>
<item android:state_pressed="true" android:state_checked="true" android:drawable="@drawable/soundon_pressed"></item>
<item android:state_pressed="false" android:state_checked="false" android:drawable="@drawable/soundoff"></item>
<item android:state_pressed="false" android:state_checked="true" android:drawable="@drawable/soundon"></item>

于 2013-01-08T22:09:56.150 回答