我還找不到解決方案。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」'也出現兩次 –