我正在尝试在我的ImageButton
onClick()
中添加验证。它就像是博格格游戏中的瓷砖。如果我点击图片1,则最近的ImageButtons
必须是唯一可点击的ImageButton
,其余按钮将设置为不可点击。我怎样才能实现它?这是我在onCreate()
声明的代码。
public void tileClick() {
if (image1.isPressed()) {
image1.setClickable(false);
image1.setImageResource(R.drawable.changes);
//clickable when image1 is pressed/clicked
image2.setClickable(true);
image5.setClickable(true);
image6.setClickable(true);
//unclickable
image3.setClickable(false);
image4.setClickable(false);
image7.setClickable(false);
image8.setClickable(false);
image9.setClickable(false);
image10.setClickable(false);
image11.setClickable(false);
image12.setClickable(false);
image13.setClickable(false);
image14.setClickable(false);
image15.setClickable(false);
image16.setClickable(false);
}
}
CustomClickListener //获取ImageButton字母
View.OnClickListener myCommoClickListner = new View.OnClickListener(){
@Override
public void onClick(View arg0) {
Log.i(TAG, "arg0.getId()=" + arg0.getId());
if (arg0.getId()==R.drawable.a){
Log.i(TAG,"arg0.getId()="+arg0.getId());
generatedString=generatedString+("a");
text.setText(generatedString);
//change ImageButton's background when clicked
((ImageButton) arg0).setImageResource(R.drawable.changea);
//Set ImageButton clickable = false when already clicked
arg0.setClickable(false);
}
}
};
//all 16 ImageButtons declared like this :
image1.setOnClickListener(myCommoClickListner);
答案 0 :(得分:1)
将您的方法更改为接受ImageButton
public void tileClick(ImageButton clickedBtn) {
// validation logic
}
将点击的ImageButton
传递给onClick()
View.OnClickListener myCommoClickListner = new View.OnClickListener(){
@Override
public void onClick(View arg0) {
...
tileClick((ImageButton) arg0) // should change arg0 to something meaningful (v, view, etc...)
...
}
}
};
然后根据传递的按钮将按钮设置为true / false。
您可以将ImageButtons
放在Array
中并对其进行迭代,然后根据按下的按钮设置可点击的内容。