使用selector
如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- green state -->
<item
android:drawable="@drawable/button_selected"
android:state_selected="true"></item>
<!-- green state -->
<item
android:drawable="@drawable/button_pressed"
android:state_pressed="true"></item>
<!-- red state -->
<item
android:drawable="@drawable/button_disabled"></item>
</selector>
然后,你应该把这种选择,如:
<Button
...
android:background="@drawable/my_selector" />
,创造每个drawable.xml
(作为红色按钮的示例):button_selected,button_pressed and button_disabled。
您还可以通过使用onTouchListener
等残留状态:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// change the color
return true;
case MotionEvent.ACTION_UP:
// intitial color
return true;
default:
return false;
}
}
});
然而,最好使用Selector
和background
,这种使用较少的资源。
UPDATE:
可以使用setBackgroundResource
方法来保持和改变点击按钮的背景状态如下:
// 1st clicklistener method
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.setBackgroundResource(R.drawable.green_drawable);
button2.setBackgroundResource(R.drawable.selector_drawable);
}
}
// 2nd clicklistener method
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.setBackgroundResource(R.drawable.green_drawable);
button1.setBackgroundResource(R.drawable.selector_drawable);
}
}
未经测试,但它应该工作。
是的,你需要写不同的可绘制的不同的固体和笔画颜色。 –
我会用3 RadioButtons RadioGrop,而不是**保持按下状态**(按钮状态是瞬间的)。您可以删除按钮图形,并使用红/绿状态的自定义选择器作为背景 –