2012-08-24 194 views
0

我有幾個按鈕,我希望當我點擊任何按鈕,它的顏色應該改變,其他按鈕應該保持不變。下一次,當我點擊其他按鈕時,它的顏色應該改變和其他保持不變(或以defalut狀態),等等。 這裏是我的代碼onclick後切換按鈕的顏色

switch(v.getId()) 
{ 
case R.id.bt1: 
bt11.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.Multiple); 
bt12.setBackgroundResource(android.R.drawable.btn_default); 
break; 

case R.id.bt2: 
bt12.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.Multiple); 
bt11.setBackgroundResource(android.R.drawable.btn_default); 
break; 
} 

,但是當我按下按鈕BT11第一次它的顏色變爲青色和當我按下BT12那麼它的顏色變成青色和第一個按鈕即BT11,在其默認狀態,但下一次的一切是哪裏錯了這兩個按鈕留在青色

回答

0

試試這個 在你的代碼的問題是你把彩色濾光片上的按鈕的BG屬性,它會[R即使你改變了BG emain,而不是設置在imgand過濾器設置爲BG FR BTN

switch(v.getId()) 
    { 
    case R.id.bt1: 
     Drawable d=b11.getBackground(); 
     d.setColorFilter(Color.CYAN,PorterDuff.Mode.MULTIPLY); 

     b11.setBackgroundDrawable(d); 
     b12.setBackgroundResource(android.R.drawable.btn_default); 
    break; 

    case R.id.bt2: 
    //b2.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.MULTIPLY); 
    Drawable dd=b12.getBackground(); 
    dd.setColorFilter(Color.CYAN,PorterDuff.Mode.MULTIPLY); 

    b12.setBackgroundDrawable(dd); 
    b11.setBackgroundResource(android.R.drawable.btn_default); 
    break; 
    } 
+0

你有沒有試過這個好友?這個對我有用 –

1

嘗試

button.setBackgroundColor(android.graphics.Color.GREEN); 
+0

我也試過這個,但它改變了按鈕的形狀。 – sachit

0

「下一次一切都走錯了這兩個按鈕留在青色」,因爲當你點擊另一個按鈕,你只是在改變其他的按鈕背景,但我猜顏色保持不變。你也必須改變背景顏色。

switch(v.getId()) 
{ 
case R.id.bt1: 
bt11.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.Multiple); 
bt12.setBackgroundResource(android.R.drawable.btn_default); 
bt12.setBackgroundColor(Black); 
break; 

case R.id.bt2: 
bt12.getBackground().setColorFilter(Color.CYAN,PorterDuff.Mode.Multiple); 
bt11.setBackgroundResource(android.R.drawable.btn_default); 
bt11.setBackgroundColor(Black); 
break; 
}