如何根据所选状态未按下状态设置按钮背景和后退

时间:2015-08-05 15:33:47

标签: java android

我目前有一个声音按钮,每次选中并点击时我想改变它的背景(我在一副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;
}

当我点击按钮时,每次都会改变它的背景。但是当我选择它时,它只会改变背景一次。是否有任何方法可以使选定的状态与按下的状态相同?

非常感谢。

3 个答案:

答案 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文件是否已选择项目。