onLongClickListener не работает на WebView - PullRequest
5 голосов
/ 11 января 2011

У меня есть следующая структура для реализации longclicklistener. Это работает, если я нажимаю на текст в веб-представлении, который содержит html-ссылку, поэтому я знаю, что структура не является полностью неправильной.

Я удалил эту ссылку сейчас, и слушатель просто больше не слушает щелчки. Кто-нибудь знает эту проблему и есть какие-то советы?

    private View.OnLongClickListener mLongClickHandler = new View.OnLongClickListener()   {
    @Override
    public boolean onLongClick(View view) {
        ...
        return true;
    }
};

...

mywebview.setOnLongClickListener(mLongClickHandler);

Ответы [ 2 ]

3 голосов
/ 07 июня 2013

Переопределите метод onTouch вашего веб-просмотра и верните true для событий ACTION_DOWN.Тем самым вы потребляете свое событие вниз.

  @Override
  public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) { 
         case MotionEvent.ACTION_DOWN:  
            return true;
      }
   }
3 голосов
/ 11 января 2011

Я пытался теперь клонировать действие longclick самостоятельно.Это работает, но только несколько раз.Через некоторое время событие onTouch больше не вызывается ... Предложения?

private Runnable copyTextAfterDelay=new Runnable() {
    public void run() {
        ...
    }
};

...

        myWebView.setOnTouchListener(new View.OnTouchListener() { 
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) { 
                    case MotionEvent.ACTION_DOWN:  
                        mTimerHandler.removeCallbacks(copyTextAfterDelay);
                        mTimerHandler.postDelayed(copyTextAfterDelay,1000);
                        break;
                    case MotionEvent.ACTION_UP: 
                        mTimerHandler.removeCallbacks(copyTextAfterDelay);
                        break;
                    case MotionEvent.ACTION_MOVE:
                        mTimerHandler.removeCallbacks(copyTextAfterDelay);
                        break;
                }
                return false;                  
            }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...