2013-11-23 49 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);