gpt4 book ai didi

java - Android:按钮按下时不会改变颜色

转载 作者:太空宇宙 更新时间:2023-11-04 13:51:15 25 4
gpt4 key购买 nike

我在我的 drawable 文件夹中创建了一个 custom_button.xml ,以便在按下按钮时和默认情况下使用。它看起来如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="@color/red"
android:endColor="@color/light_red"
android:angle="270" />
<corners
android:radius="5dp" />
</shape>
</item>

<item>
<shape>
<gradient
android:startColor="@color/light_purple"
android:endColor="@color/purple"
android:angle="270" />
<corners
android:radius="5dp" />
</shape>
</item>

我的按钮在未按下时看起来很好,它显示默认的紫色按钮。但是当我按下它时,它并没有像 state_pressed 时那样变成红色按钮。

在我的activity_main.xml中,按钮定义如下:

<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/custom_button"
android:layout_margin="5dp"/>

如果有什么区别的话,我正在使用嵌套的LinearLayout

如果我遗漏了什么,请告诉我!

编辑:我找到了问题的根源,但不知道如何解决它。当我从 createListeners 中删除以下监听器时,按钮会按其应有的方式更改颜色。

 b1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
int beat = getBeat(1);
m1 = MediaPlayer.create(MainActivity.this, beat);
m1.start();
m1.setLooping(true);
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
m1.release();
}
return false;
}
});

它的基本作用是,只要按下按钮,它就会播放歌曲。这如何影响按钮颜色?

最佳答案

onTouchListener() 似乎无法与选择器一起正常工作。您必须在 ACTION_DOWN 和 ACTION_UP 中手动更改背景。

关于java - Android:按钮按下时不会改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30247717/

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