#android #android-widget
#Android #android-виджет
Вопрос:
У меня есть кнопка, которую я обрабатываю с помощью обработчика onClick.
Однако мне также нужно реагировать на события onTouchEvent, чтобы я мог обрабатывать подсветку кнопок.
Проблема в том, что если я верну «false» из своего обработчика onTouchEvent, он вызовет обработчик onClick, но никогда не выдаст мне onTouchEvent для последующего события «up».
Если я верну «true» из onTouchEvent, я получу событие «up», но оно никогда не отправит касание onClick.
Итак, каковы мои варианты?
- Внедрите мою собственную обработку «щелчка» внутри onTouchEvent, что означает, что мне потребуется отслеживать перемещения в области кнопок и за ее пределами и т. Д. Кажется довольно сложным.
- Я мог бы заставить мою кнопку использовать селектор вместо одного изображения и назначать разные изображения для разных состояний. Проблема, с которой я сталкиваюсь, заключается в том, что селекторы громоздки для изменения изображений, что мне нужно сделать. (Когда мое приложение находится в разных «режимах», изображения кнопок для разных состояний меняются. Опять же, это кажется слишком сложным.
Разве нет простого способа добиться всего этого???
Комментарии:
1. Позвольте мне посмотреть, правильно ли я это понимаю. Вы хотите переопределить подсветку кнопки по умолчанию своей собственной? Если да, можете ли вы выполнить все свои функции выделения в onTouch и вызвать button.performClick() при получении ACTION_UP? performClick вызывает метод onClick кнопки, если установлен onclicklistener .
Ответ №1:
Если вам нужны события щелчка и касания в одном и том же представлении, используйте детектор жестов. Вам следует специально изучить метод onShowPress его слушателя.
Ответ №2:
Похоже, что ваш лучший выбор будет вытекать из варианта 2, приведенного выше.
Я бы предложил создать несколько Button
StateListDrawable
селекторов, а затем программно переключаться между стилями, используя Button.setBackgroundResource()
.
Комментарии:
1. Это хорошая идея. Однако на самом деле я просто переписывал весь StateListSelector каждый раз, когда хотел изменить изображения. Тем не менее, я хотел бы оставить открытым вопрос о том, как обрабатывать onClick и onTouchEvents одновременно.