setOnClickListener не отвечает на Android WebView - PullRequest
5 голосов
/ 30 августа 2010

У меня есть Android LisView, который содержал TextView для отображения данных в списке,

Я добавляю, чтобы изменить его на Webview, после этого все выглядит хорошо, кроме setOnClickListener, который больше не отвечает ..

Я прочитал о Webview и обнаружил, что setOnClickListener не поддерживается, вместо него поддерживается setOnTouchListener

способ использовать ту же функциональность, что и setOnClickListener в Android WebView?

Как это:

  myWebView.setOnClickListener(new OnClickListener(){ 
                          @Override 
                          public void onClick(View v) {

                          //do it ..

                          } 
                        }); 

Спасибо (:

Ответы [ 2 ]

4 голосов
/ 14 августа 2014

Я закончил с этим решением:

public class ClickableWebView extends WebView {

    private static final int MAX_CLICK_DURATION = 200;
    private long startClickTime;

    public ClickableWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public ClickableWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ClickableWebView(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN: {
                startClickTime = Calendar.getInstance().getTimeInMillis();
                break;
            }
            case MotionEvent.ACTION_UP: {
                long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
                if(clickDuration < MAX_CLICK_DURATION) {
                    super.performClick();

                }
            }
        }
        return true;
    }

}

Примечания:

  • подавляет все события нажатия на что-либо внутри WebView (например, гиперссылки)
  • просто добавьте OnClickListener, добавив onClick в XML или в Java
  • не прерывает жесты прокрутки

Благодаря Stimsoni Ответ на Как отличить перемещение и нажатие на TouchEvent ()?

4 голосов
/ 30 августа 2010

Почему бы не использовать слушатель onTouch, как вы заявили?

myWebView.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            return false;
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...