Android: подавить onClick при перетаскивании или щелчке

1

У меня есть представление, по которому я хочу добавить onClickListener. Проблема заключается в том, что слушатель срабатывает, даже когда пользователь выполняет операцию перетаскивания. Как я могу отключить нажатие, когда пользователь перетягивает, и обрабатывать только, когда это щелчок без перетаскивания?

Для полноты, использую что-то вроде ниже, чтобы добавить onClickListener -

private void installClickHandler(final GraphicalView x) {
    x.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent(getApplicationContext(), BillTablesActivity.class);
            startActivity(myIntent);
            }
        }
    });
}
  • 0
    Вы можете использовать onTouchListener для достижения этой цели
  • 0
    Как насчет добавления логического флага isDragging ? И когда начинается перетаскивание, установите флаг в истинное значение. А внутри onClick метод проверки , если isDragging ложно?
Показать ещё 1 комментарий
Теги:

1 ответ

1

установите onTouchListener(), который либо возвращает true, если вы перетаскиваете, либо возвращает false, в противном случае ваш OnClickListener обрабатывает событие. другими словами, это зависит от вас, чтобы решить, рассматривать ли это прикосновение даже щелчком или нет.

чтобы решить, есть ли что-то щелчок или перетащить (или длительное нажатие), реализация вашего OnTouchListener должна отслеживать события ACTION_DOWN и ACTION_UP и сравнивать время между ними. короткий интервал был бы кликом, более длительный период времени был бы перетаскиванием или длительным нажатием.

конкретная реализация оставлена в качестве упражнения для читателя :)

  • 0
    +1 То же самое пришло мне в голову, когда я увидел этот вопрос :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню