我还找不到解决方案。ImageButton选择器在state_selected中点击时不会触发state_pressed
我有一个静音/取消静音按钮。我将它设置为ImageButton,其中src和background都是可选择的drawable。当未选择按钮
“静音”图标当点击了按钮我想显示黄色背景 - 当选择了按钮 了“静音”图标 -
我显示 几分之一秒 但我遇到的是: 只有在未选中按钮(isSelected = false)时才显示黄色背景(通过单击),并且在选择按钮时不显示(isSelected = false )
我不明白为什么,但那就是发生了什么!
当按钮被按下时(无论是否被选中),黄色背景确实出现,但我真正感兴趣的是当你只需点击它而不需要保持按下
任何解决方案?
view.java
volumemuteImageButton = (ImageButton) findViewById(R.id.volume_mute);
volumemuteImageButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
volumemuteImageButton.setSelected(!volumemuteImageButton.isSelected());
}
});
layout.xml
<ImageButton
android:id="@+id/volume_mute"
android:layout_width="58dp"
android:layout_height="fill_parent"
android:src="@drawable/img_selector"
android:background="@drawable/bg_selector" />
img_selector.png
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/sdmp_ic_muted_pressed"
android:state_selected="true" android:state_pressed="true" />
<item android:drawable="@drawable/sdmp_ic_muted_pressed"
android:state_selected="true" android:state_focused="true" />
<item android:drawable="@drawable/sdmp_ic_muted_default"
android:state_selected="true" />
<item android:drawable="@drawable/sdmp_ic_mute_pressed"
android:state_selected="false" android:state_pressed="true" />
<item android:drawable="@drawable/sdmp_ic_mute_pressed"
android:state_selected="false" android:state_focused="true" />
<item android:drawable="@drawable/sdmp_ic_mute_default"
android:state_selected="false" />
</selector>
bg_selector.png
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/sdmp_color_yellow"
android:state_pressed="true" />
<item android:drawable="@drawable/sdmp_color_yellow"
android:state_focused="true" />
</selector>
的ImageButton的并没有真正公顷有一个开/关选择器,所以你将不得不用编程方式使用onClick〜(改变drawable)。你需要两个选择器xmls一个用于打开,一个用于关闭。在他们每个中你需要2个项目(一个用于按下,一个用于未按下) –
我实际上已经在onClick中以编程方式更改了已选状态。我无法解释的是,为什么state_pressed通过点击按钮被解雇,但没有选择时,它没有被选中 –
我注意到你的选择器有错误?! android:state_selected =“false”android:state_pressed =“true”'出现两次,android:state_selected =“true”android:state_focused =“true”'也出现两次 –