点击它后,如何让我的ImageButton改变颜色?
我想做这样的事情:
按钮(蓝色) - >点击 - >按钮(红色) - >点击 - >按钮(蓝色) - >点击 - >按钮(红色)
当我点击它时切换颜色,当我再次点击它时,它会回到原始状态。
我试过这样做:
mTrashFlag = !mTrashFlag;
ImageButton bt = (ImageButton)findViewById(R.id.trash_button);
if(!mTrashFlag)
{
bt.setBackgroundColor(0x4CB8FB);
}
else
{
bt.setBackgroundColor(0xff0000);
}
但它没有用。它将颜色变为白色,然后我无法再次点击它。
答案 0 :(得分:5)
您应该直接传递Color类属性而不是hexa代码:
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);
}
}
});
答案 1 :(得分: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";
}
}
答案 2 :(得分: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);
}
}
答案 3 :(得分:0)
只需包含alpha值(FF)
所以
bt.setBackgroundColor(0x4CB8FB);
将是
bt.setBackgroundColor(0xFF4CB8FB);