我的Android应用程序上有一个静音按钮。我想有2个州: 声音 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>
我遇到的问题是,虽然选择按钮后背景会发生变化,但我希望在下次选择之前保留背景。
答案 0 :(得分: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);
}
}});
感谢所有帮助过的人。
答案 1 :(得分: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>