我定义我的按钮状态
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<gradient
android:endColor="@color/orange_light"
android:startColor="@color/orange"
android:angle="270" />
<corners
android:radius="6dp" />
<padding
android:left="10dp"
android:right="10dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<gradient
android:endColor="@color/orange_light"
android:startColor="@color/orange"
android:angle="270" />
<corners
android:radius="6dp" />
<padding
android:left="10dp"
android:right="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:endColor="@color/grey_light"
android:startColor="@color/grey"
android:angle="270" />
<corners
android:radius="6dp" />
<padding
android:left="10dp"
android:right="10dp" />
</shape>
</item>
</selector>
并将其设置为我按钮的背景。
当我按下它时,它可以正确更改颜色,但是我希望它在释放后保持“按下”颜色(以显示哪个按钮处于活动状态)。
我怎样才能做到这一点?
requestFocus()
不起作用...谢谢
最佳答案
在setOnClickListener中,您可以实现一些逻辑。例如,按下一个按钮,它将获得一种颜色并保持该颜色,直到按下另一个按钮为止,并且当我按下的第二个按钮比第一个按钮的背景被按下时,它将重置为默认值。
您可以实现所需的内容,而只需添加一些逻辑即可。如果您希望按钮仅在处于按下状态时具有某种颜色,而不是覆盖触摸侦听器
你可以这样
addButtonLayout.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
imageAddSign.setImageResource(R.drawable.a);
}else{
imageAddSign.setImageResource(R.drawable.b);
}
return false;
}
});