当前位置:  开发笔记 > 编程语言 > 正文

Android:禁用webview中的文本选择

如何解决《Android:禁用webview中的文本选择》经验,为你挑选了4个好方法。

我正在使用webview在我的应用程序中呈现一些格式化的东西.对于某些交互(特定于某些dom元素),我使用javascript和WebView.addJavascriptInterface().现在,我想要认识一下.不幸的是,onLongTouch在Android 2.3中,显示了文本选择的句柄.

如何在设置onTouchListener和返回true的情况下关闭此文本选择?(然后,与"网站"的互动不再起作用.



1> Samuel..:

这对我有用

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

我没有测试过,如果你不想长按一下引起振动,你可以试试这个:

mWebView.setHapticFeedbackEnabled(false);


mWebView.setLongClickable(假); 没有任何不同,但设置长点击监听器并从onLongClick()方法传递true对我有用.
这对我有用,但我不需要最后一行"mWebView.setLongClickable(false);"

2> 小智..:

设置WebKit的CSS属性-webkit-user-selectnone可以解决这个问题.

用于禁用选择的示例CSS:

* {
   -webkit-user-select: none;
}


不幸的是,这并不适用于所有版本的Android.它_should_是最好的解决方案,但它不是:/
*:not(输入):not(textarea){webkit-user-select:none; }

3> janoliver..:

我想到了!!这就是你如何实现自己的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!
}

这有效.



4> 小智..:

如果您使用,似乎关闭通过长按切割/粘贴

    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();
        }

    });

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有