Android: отключить выделение текста в веб-просмотре - PullRequest
49 голосов
/ 24 февраля 2011

Я использую веб-представление для представления некоторых отформатированных материалов в моем приложении. Для некоторых взаимодействий (которые характерны для определенных элементов DOM) я использую javascript и WebView.addJavascriptInterface(). Теперь я хочу распознать долгое прикосновение. К сожалению, onLongTouch, в Android 2.3 отображаются ручки для выделения текста.

Как отключить выделение текста без , установив onTouchListener и вернуть true? (Тогда взаимодействие с «сайтом» больше не работает.

Ответы [ 5 ]

110 голосов
/ 09 октября 2012

Это сработало для меня

mWebView.setOnLongClickListener(new OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        return true;
    }
});
mWebView.setLongClickable(false);

Я не проверял, если вы не хотите вибрации, вызванные длинным щелчком, вы можете попробовать это:

mWebView.setHapticFeedbackEnabled(false);
30 голосов
/ 08 сентября 2011

Установка свойства webkit css -webkit-user-select в none решит проблему.

Пример CSS для отключения выделения:

* {
   -webkit-user-select: none;
}
8 голосов
/ 24 февраля 2011

Я понял это !! Вот как вы можете реализовать свой собственный longtouchlistener. В функции longTouch вы можете позвонить на ваш интерфейс JavaScript.

var touching = null;
$('selector').each(function() {
    this.addEventListener("touchstart", function(e) {
        e.preventDefault();
        touching = window.setTimeout(longTouch, 500, true);
    }, false);
    this.addEventListener("touchend", function(e) {
        e.preventDefault();
        window.clearTimeout(touching);
    }, false);
});

function longTouch(e) {
    // do something!
}

Это работает.

5 голосов
/ 19 апреля 2012

Похоже, что вырезание / вставка при длительном нажатии отключается, если вы использовали

    articleView.setWebChromeClient(new WebChromeClient(){...})

См. https://bugzilla.wikimedia.org/show_bug.cgi?id=31484

Так что, если вы используете setChromeClient, и вы хотите иметь длинный щелчокчтобы начать копирование / вставку, выполните следующие действия:

    webView.setWebChromeClient(new WebChromeClient(){

        [.... other overrides....]

        // @Override
        // https://bugzilla.wikimedia.org/show_bug.cgi?id=31484
        // If you DO NOT want to start selection by long click,
        // the remove this function
        // (All this is undocumented stuff...)
        public void onSelectionStart(WebView view) {
            // By default we cancel the selection again, thus disabling
            // text selection unless the chrome client supports it.
            // view.notifySelectDialogDismissed();
        }

    });
1 голос
/ 24 февраля 2011

Похоже, что единственный вариант - установить onTouchListener и написать собственный код для обнаружения длинного щелчка.Затем верните true, если это длинный щелчок, и false в противном случае.

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