Android - невозможно установить кнопку Clickable (false) после нажатия

У меня есть кнопка, похожая на переключатель, где я пытаюсь setClickable(false) после того, как нажму на нее, чтобы обрабатывался только первый щелчок (дополнительные щелчки игнорируются в случае случайных двойных щелчков/ несколько кликов).

Вот аналогичный код:

Button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Button.setClickable(false);
        //do other things
    }
});

Затем, в конце концов, у меня где-то есть код, в котором я сбрасываю clickable на true, в зависимости от переменной состояния, чтобы я мог отключиться.

Проблема в том, что когда я очень быстро нажимаю кнопку, кажется, что последующие нажатия все еще обрабатываются. Есть ли задержка эффектов setClickable()?

Кроме того, я читал об использовании setEnabled(false) вместо этого, но я не могу использовать его в своем случае. Мне нужно, чтобы кнопка была включена, но не нажималась.


person martinC    schedule 01.09.2020    source источник
comment
После того, как вы сделали другие вещи, вы можете снова включить кнопку   -  person Ticherhaz FreePalestine    schedule 01.09.2020
comment
Вы можете попробовать установить для параметра setVisibility значение GONE.   -  person null_override    schedule 01.09.2020


Ответы (3)


Судя по вашему комментарию, вам, вероятно, нужно что-то вроде этого.

  Boolean SWITCH_ON = false;

  Button.setOnClickListener(new OnClickListener() {
 
  public void onClick(View v) {
         if(!SWITCH_ON ){
                  SWITCH_ON = true;   
         }
    }
 });

Button.setOnLongClickListener(new View.OnLongClickListener() {

public boolean onLongClick(View v) {
    
   if(SWITCH_ON ){
      // do your task for long click here ...SWITCH_ON 
    }
   return true;
}
});
person Rohaitas Tanoli    schedule 01.09.2020

Вы можете использовать button.setEnabled(false); в своем методе onClick, чтобы отключить кнопку.

Отключенные кнопки не запускают метод onClick, и при необходимости вы можете легко снова включить его с помощью button.setEnabled(true);.

person isaaaaame    schedule 01.09.2020
comment
Я не могу отключить кнопку. Мне нужно, чтобы кнопка была включена, но не нажималась. Причина, которую я еще не назвал, заключается в том, что кнопка должна быть нажата долго, когда переключатель включен. - person martinC; 01.09.2020

Вы можете добавить еще одну переменную с именем buttonEnabled или около того и инициализировать ее значением true. Затем в onclick сделайте следующее:

Button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Button.setClickable(false);
        if(buttonEnabled) {
            //do other things
        }
        buttonEnabled = false;
    }
});

Обратите внимание, что вам нужно изменить переменную на, если вы хотите повторно активировать ее

person McSlinPlay    schedule 01.09.2020