我用
定义按钮的状态<?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()
不起作用......
由于
答案 0 :(得分:2)
在你的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;
}
});
答案 1 :(得分:0)
我认为,你需要的是一个复选框,而不是一个按钮。如果您需要更多功能,请尝试在那里设置背景或将其子类化。