我有一个设置了android:clickable="true"
的ImageView,并且在单击ImageView时使用setColorFilter()
添加了颜色。
有没有一种方法可以获取onClick()
的状态,以便在单击图像后一次可以应用颜色,例如setColorFilter(#FFF)
,并且在再次单击ImageView时可以应用setColorFilter(null)
使ImageView恢复正常?
谢谢。
答案 0 :(得分:0)
您可以使用增加计数器值的代码,然后看到它是奇数或偶数,然后执行您的工作。
我的意思是,代码看起来像这样:
int clicked = 0;
buttonX.setOnClickListener(new OnClickListener() {
public void onClick(View v){
if(clicked%2 == 0){
// apply colour and do your stuff
}
else{
clickedOnce++;
}
}
});
当您单击按钮时,这将交替完成您的工作。您还可以在活动停止或类似操作时再次将此clicked
设置为零,以避免使clicked
的值增加太多。
答案 1 :(得分:0)
尝试一下:
boolean flag=false;
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (flag) {
imageView.setColorFilter(null);
}
else {
imageView.setColorFilter(yourColor);
}
flag=!flag;
}
});
这种方式对您来说很简单:)
答案 2 :(得分:0)
在这些情况下,通常的做法是将有关View状态的此类信息存储在其标签中:
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ImageView iv = (ImageView) view;
String tag = iv.getTag() == null ? "0" : iv.getTag().toString();
if (tag.equals("1")) {
iv.setColorFilter(null);
iv.setTag("0");
} else {
iv.setColorFilter(yourColor);
iv.setTag("1");
}
}
});
每次单击时,侦听器会将ImageView
的标签从"0"
切换到"1"
。