gpt4 book ai didi

android - 在 state_selected 中单击时,ImageButton 选择器不会触发 state_pressed

转载 作者:太空狗 更新时间:2023-10-29 16:09:06 25 4
gpt4 key购买 nike

我还没有找到解决办法。

我有一个静音/取消静音按钮。我将它设置为一个 ImageButton,src 和背景都是选择器可绘制对象。

我正在展示- 选择按钮时的“静音”图标- 未选择按钮时的“静音”图标

单击按钮时,我想在几分之一秒内显示黄色背景但我的经验是:黄色背景仅在按钮未被选中时(通过单击)出现(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());
}
});

布局.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_选择器.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>

最佳答案

我解决了!!!!!

我不知道为什么,但是使用 onTouch ACTION_DOWN 会做到这一点,而使用 onClick state_pressed 只有在从 selected=false 传递到 selected=true

时才会触发

之前是这样的:

        volumemuteImageButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setVolumeMute(!volumemuteImageButton.isSelected());
}
});

现在怎么样了:

        volumemuteImageButton.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) {
setVolumeMute(!volumemuteImageButton.isSelected());
}
return false;
}
});

关于android - 在 state_selected 中单击时,ImageButton 选择器不会触发 state_pressed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7498166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com