使用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,而不是**保持按下狀態**(按鈕狀態是瞬間的)。您可以刪除按鈕圖形,並使用紅/綠狀態的自定義選擇器作爲背景 –