如何获得onClick状态?

时间:2018-12-08 11:26:26

标签: android onclick

我有一个设置了android:clickable="true"的ImageView,并且在单击ImageView时使用setColorFilter()添加了颜色。

有没有一种方法可以获取onClick()的状态,以便在单击图像后一次可以应用颜色,例如setColorFilter(#FFF),并且在再次单击ImageView时可以应用setColorFilter(null)使ImageView恢复正常?

谢谢。

3 个答案:

答案 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"