Я застрял на этом некоторое время, и хотя я нашел обходной путь, я не совсем понимаю , почему это работает, и я должен , чтобы правильно его реализовать! Там также, кажется, не хватает информации о ZoomButtonsController.
В других статьях в моем приложении реализована функция жестов «смахивание». Однако одним касанием я также хотел, чтобы кнопки зума появлялись программно. У меня уже был OnTouchListener на основе GestureDetector для этого ScrollView, и поэтому я добавил ZoomButtonsController в качестве OnZoomListener для него (вместе с кодом для обработки onSingleTapConfirmed и другими подобными вещами).
Все работало нормально - пока не появились кнопки зума. С этого момента (при условии постоянной видимости) никакие жесты не работают, даже не нажимая, даже после того, как кнопки масштабирования исчезают! Вы можете нажимать кнопки масштабирования, пока они находятся на экране, и прокрутка по-прежнему работает нормально, но жесты исчезли.
Я наконец-то придумал "исправить": если OnZoomListener.onVisibilityChanged () срабатывает невидимым, я вызываю setOnTouchListener () моегоScrollView для восстановления gestListener (как я это делал в onCreate ()). Жесты снова работать нормально.
Редактировать: если вы делаете это, когда onVisibilityChanged () запускает видимое, вы получаете жесты, работающие сразу, НО это отключает кнопки масштабирования, так что это не так здорово! Было бы неплохо иметь оба ...
Итак, правильно ли я делаю способ использования ZoomButtonsController, а если нет, то как? Что еще более важно, почему, когда появляются кнопки масштабирования, они, кажется, навсегда заменяют мой OnTouchListener? Предполагается ли, что ZoomButtonsController угоняет жесты в настоящее время после его запуска? Является ли это чем-то более простым, чем это (какое-то общее свойство слушателей)?