我目前有一个声音按钮,每次选中并点击时我想改变它的背景(我在一副Android眼镜上开发,所以当按下它时它会& #39;没有按下,因此有两种不同的状态。)
到目前为止,我已使用xml文件更改按钮背景:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/no_music"
android:state_selected="true" />
<item android:drawable="@drawable/no_music"
android:state_focused="true" />
<item android:drawable="@drawable/music" />
</selector>
在按钮的onClick
方法中,我根据状态设置了按钮背景:
public void musicPlay(View view) {
Button music = (Button) findViewById(R.id.music);
if(isPlaying) {
music.setBackgroundResource(R.drawable.no_music);
MusicManager.release()
}else{
music.setBackgroundResource(R.drawable.music);
MusicManager.start(this);
}
isPlaying = !isPlaying;
}
当我点击按钮时,每次都会改变它的背景。但是当我选择它时,它只会改变背景一次。是否有任何方法可以使选定的状态与按下的状态相同?
非常感谢。
答案 0 :(得分:0)
您可以将可绘制资源作为按钮的资源:
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize="true">
<item android:drawable="@drawable/musicon" android:state_checked="false"/>
<item android:drawable="@drawable/musicoff" android:state_checked="true" />
<item android:drawable="@drawable/default" />
这样的事情应该有效。祝好运。
答案 1 :(得分:0)
在您的代码中执行此操作:
public void musicPlay(View view) {
Button music = (Button) findViewById(R.id.music);
if(isPlaying) {
music.setPressed(true);
MusicManager.release()
}else{
music.setPressed(false);
MusicManager.start(this);
}
isPlaying = !isPlaying;
}
同样在你的xml中:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/no_music" android:state_selected="true"/>
<item android:drawable="@drawable/no_music" android:state_pressed="true"/>
<item android:drawable="@drawable/music"/>
</selector>
答案 2 :(得分:0)
将按下按钮的属性设置为true
,然后验证您的按钮background.xml
文件是否已选择项目。