В настоящее время я работаю над Java SDK, который устанавливается исходным разработчиком в его существующее приложение для Android. Теперь мне нужно установить несколько слушателей событий, например:

public void registerTouchListener(ScrollView scrollview) {
  scrollview.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
      Log.d("SDK", event.toString());
      return false;
    }
  });
}

Проблема в том, что переданный в scrollview уже может иметь зарегистрированный слушатель, поэтому мой вопрос в том, как я могу подключиться к существующему слушателю или зарегистрировать второго слушателя?

3
electronix384128 4 Янв 2016 в 19:53

2 ответа

Лучший ответ

Может быть, слишком хакерский, но не могли бы вы каким-то образом «украсть» событие касания до того, как оно попадет в Scrollview, проверив координаты того, где будет происходить касание, и если оно в вашем списке зарегистрированных Scrollview. Затем действуйте так, как если бы вы не обработали событие касания - таким образом вы могли бы действовать с этим Scrollview до того, как он будет передан на событие касания?

1
pfrank 4 Янв 2016 в 22:30

Не могли бы вы вместо предоставления такого API предоставить API, в котором была бы функция, которая вызывала бы onTouch непосредственно в конце (или начале) своего события? Не так дружелюбно, потому что он не будет находиться в разделе инициализации, но он будет намного яснее и менее ошибочным.

1
pfrank 4 Янв 2016 в 22:21