Долгое нажатие Android WebView НЕ по ссылке, т. Е. В пустом пространстве - PullRequest
0 голосов
/ 25 июля 2010

Я могу обнаружить длинный щелчок на моем WebView, используя следующий код:

webView.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            Log.d("Debug","On Long Press Web View");
            return false;
        }
    });

Это прекрасно работает, когда я долго нажимаю на ссылку, но не работает, когда я долго нажимаю в области, где нет ссылки, то есть пробел.

Моей первой мыслью для решения этой проблемы было использование GestureDetector:

public boolean dispatchTouchEvent(MotionEvent event) {              
    super.dispatchTouchEvent(event);
    return detector.onTouchEvent(event);
}

или

public OnTouchListener otl = new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (detector.onTouchEvent(event)){
            return true;
        }else{
            return false;
        }
    }
};

А затем переопределить метод onLongPress в GestureDetector:

public void onLongPress(MotionEvent e) {

}

Любой из вышеперечисленных методов работает, и метод onLongPress выполняется, когда я долго нажимаю на веб-страницу, но не на ссылку. Проблема заключается в том, что когда я теперь долго нажимаю на ссылку, вызываются оба метода длинного нажатия, во-первых, GestureDetector onLongPress, а затем WebView onLongClick. Есть ли способ просто вызывать только WebView onLongClick (), когда я долго нажимаю на ссылку.

Andy

Ответы [ 3 ]

1 голос
/ 25 апреля 2012

вы должны переопределить webview.onTouchEvent() и затем использовать postDelayed method().то есть postDelayed(mLongPressRunnable, mLongPressTimeout);

mLongPressRunnable является new java.lang.Runnable()

0 голосов
/ 07 апреля 2013

Мне нужно только простое решение здесь.Runnable не был необходим.Все, что я сделал, это поместил часть вопроса выше в мой класс gestDetector

@Override
public void onLongPress(MotionEvent e) {
    Toast.makeText(mContext, "LongPress", Toast.LENGTH_SHORT).show();
}

. Я НЕ установил WebView longClickable ().И я получаю тост "LongPress" за пробел, ссылки, изображения, где угодно.Я должен добавить, что мой WebView является расширенным классом WebView с этим внутренним классом gestDetector, который расширяет SimpleOnGestureListener.

0 голосов
/ 14 февраля 2013

Вы должны попробовать webView.setLongClickable(true);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...