Как получить на клике состояние? - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть ImageView, который я установил android:clickable="true", и я использую setColorFilter(), чтобы добавить цвет при щелчке по ImageView.

Есть ли способ получить состояние onClick(), чтобы при нажатии на изображение один раз можно было применить цвет, например setColorFilter(#FFF), а при повторном нажатии ImageView применить setColorFilter(null) чтобы вернуть ImageView в нормальное состояние?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

Попробуйте:

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;
            }
        });

Этот способ очень прост для вас:)

0 голосов
/ 08 декабря 2018

Обычная практика в этих случаях - хранить такую ​​информацию о состоянии представления в своем теге:

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" каждый раз при нажатии.

0 голосов
/ 08 декабря 2018

Вы можете использовать код с увеличением значения счетчика, который, как вы видите, является нечетным или четным, и выполняет свои функции.

То, что я говорю, выглядит примерно так в коде:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...