我有两个buttons
,它们以编程方式编码(我没有XML
文件)。我正在尝试切换背景onClick
,但它不会切换。ImageButton背景不能以编程方式切换
This不能帮助我,因为它已被弃用,并且this不起作用。我知道如何处理XML
,但正如我所说的,我没有。如何正确地在点击后来回切换ImageButton
背景?当我点击buttons
时,背景会发生变化,但是会保持这种状态直到我再次单击它。我希望它立即回到原来的状态。
实例化的buttons
(在两者之间大量的代码只是显示相关button
代码。):
static final int leftFireButtonID = 3;
static final int rightFireButtonID = 4;
private boolean isLeftButtonClicked = false;
private boolean isRightButtonClicked = false;
leftFireButton = new ImageButton(this);
rightFireButton = new ImageButton(this);
leftFireButton.setImageResource(R.drawable.red_button);
rightFireButton.setImageResource(R.drawable.red_button);
代码听众:
leftFireButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soundPool.play(soundID,1.0f,0.5f,1,0,1.0f); //Pew pew gunfire
if(view.getId() == leftFireButtonID) {
isLeftButtonClicked = !isLeftButtonClicked;
view.setBackgroundResource(isLeftButtonClicked ? R.drawable.red_button_pressed : R.drawable.red_button); //stays...needs to change back
}
}
});
rightFireButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soundPool.play(soundID, 0.5f, 1.0f, 1, 0, 1.0f); //Pew pew gunfire
if(view.getId() == rightFireButtonID) {
isRightButtonClicked = !isRightButtonClicked;
view.setBackgroundResource(isRightButtonClicked ? R.drawable.red_button_pressed : R.drawable.red_button); //stays....needs to change back
}
}
});
这是很容易与XML
选择。任何帮助表示赞赏。
你需要做的是用'OnTouchListener'代替。一个'OnClickListener'只会在'ACTION_UP'事件后触发。 –
在我回来检查我的通知之前,我从字面上只是做了这个。大声笑。很高兴我明白了。尽管感谢您的评论! – IRGeekSauce