【发布时间】:2015-05-14 21:31:52
【问题描述】:
我在我的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;
}
});
它的基本作用是,只要按下按钮,它就会播放一首歌曲。这对按钮颜色有何影响?
【问题讨论】:
-
看看它是否有所作为可能是个好主意。 stackoverflow.com/help/mcve