单击时,ImageButton会更改背景颜色

use*_*680 0 android colors android-ui android-button

当我点击它时,如何让我的ImageButton改变它的颜色?

我想做这样的事情:

按钮(蓝色) - >单击 - >按钮(红色) - >单击 - >按钮(蓝色) - >单击 - >按钮(红色)

当我点击它切换颜色,当我再次点击它回到原始.

我试过这样做:

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

但它没有用.它将颜色变为白色,然后我无法再次点击它.

fla*_*yte 5

您应该直接传递Color类属性而不是hexa代码:

if(!mTrashFlag)
{
    bt.setBackgroundColor(Color.parseColor("#4CB8FB"));
}
else
{
    bt.setBackgroundColor(Color.RED);
}
Run Code Online (Sandbox Code Playgroud)

此外,您必须在按钮上注册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);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)