2013-11-23 73 views
0

如何讓我的ImageButton在點擊時改變其顏色?ImageButton在點擊時更改背景顏色

我想要做這樣的事情:

按鈕(藍色) - >點擊 - >按鈕(紅色) - >點擊 - >按鈕(藍色) - >點擊 - >按鈕(紅)

當我點擊它切換顏色,當我再次點擊它會回到原來的。

我試着這樣做:

mTrashFlag = !mTrashFlag; 
ImageButton bt = (ImageButton)findViewById(R.id.trash_button); 
if(!mTrashFlag) 
{ 
    bt.setBackgroundColor(0x4CB8FB); 
} 
else 
{ 
    bt.setBackgroundColor(0xff0000); 
} 

,但它沒有工作。它將顏色更改爲白色,然後我無法再次單擊它。

回答

4

您應該傳遞,而不是直接的六碼Color類屬性:

if(!mTrashFlag) 
{ 
    bt.setBackgroundColor(Color.parseColor("#4CB8FB")); 
} 
else 
{ 
    bt.setBackgroundColor(Color.RED); 
} 

而且,你必須註冊在按鈕上OnClickListener得到通知時,它的點擊,所以最終的代碼是:

bt.setOnClickListener(new View.OnClickListener() { 

    // 'v' is the clicked view, which in this case can only be your button 
    public void onClick(View v) { 
     mTrashFlag = !mTrashFlag; 

     if (!mTrashFlag) 
     { 
      v.setBackgroundColor(Color.parseColor("#4CB8FB")); 
     } 
     else 
     { 
      v.setBackgroundColor(Color.RED); 
     } 
    } 
}); 
+0

由於它的工作! 。順便說一句,我不需要註冊,因爲在xml佈局中,我使用onclick = my_function .. – user2953680

+0

噢好吧我不確定這一點。很高興工作!不要忘記接受答案:) – Flawyte

0

您可以使用下面的方法..

String color = "b"; 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.buttonlayout); 

     btn = (Button) findViewById(R.id.btn); 
     btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       onButtonClick(R.id.btn); 
      } 
     }); 
} 

public void onButtonClick(int id) { 

     if (color.equals("b")) { 
      findViewById(id).setBackgroundColor(Color.RED); 
      color = "r"; 
     } else if (color.equals("r")) { 
      findViewById(id).setBackgroundColor(Color.BLUE); 
      color = "b"; 
     } 

    } 
0

你可以試試這個代碼:

ImageButton mButton; 
int mTrashFlag=0; 

**get the id and implement the on click listener** 


mButton=(ImageButton)findViewById(R.id.bt); 
    mButton.setOnClickListener(this); 

public void onClick(View v) { 
    // TODO Auto-generated method stub 


    if(mTrashFlag==0){ 



     mButton.setBackgroundColor(Color.BLUE); 


     mTrashFlag =1; 
    } 

    else if(mTrashFlag==1){ 

     mTrashFlag=0; 

     mButton.setBackgroundColor(Color.RED); 

    } 

} 
0

就包括阿爾法值(FF) 所以
bt.setBackgroundColor(0x4CB8FB);

bt.setBackgroundColor(0xFF4CB8FB);