3

我想禁用对 webView 的长按,所以我无法选择其中的文本,我使用三种方法来做到这一点,但没有任何效果:

1) android:longClickable="false"

2) webView.setLongClickable(false);

3) webView.setOnLongClickListener(new OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                return true;
            }
        });

所以请提供任何帮助。

4

6 回答 6

13

要禁用长点击,您需要先启用长点击,setLongClickable(true);然后再启用setOnLongClickListener,并且什么都不返回:

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

如果您只需要禁用文本选择,最好将以下 CSS 添加到您的网页,它将禁用文本选择:

body {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

在此处查看 Mozilla 文档。

于 2014-01-08T21:23:54.357 回答
1

这对我有用,如https://stackoverflow.com/a/12793740/5035343所示

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

而要消除长按造成的震动,可以试试这个。

mWebView.setHapticFeedbackEnabled(false);
于 2016-04-05T15:25:27.860 回答
0

Try this:

webView.setOnLongClickListener(null);
于 2013-04-02T13:23:14.050 回答
0

尝试这个:

   public void SelectText(View v) {
        try {
            KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
                    KeyEvent.KEYCODE_ESCAPE, 0, 0);
            shiftPressEvent.dispatch(v);
        } catch (Exception e) {
            throw new AssertionError(e);
        }
    }

或者 :

public boolean onTouchEvent(MotionEvent "ACTION_DOWN") {
    try {
        KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
                KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
        shiftPressEvent.dispatch(webview);
    } catch (Exception e) {
        throw new AssertionError(e);
    }
    return false;
}
于 2013-04-02T12:42:22.323 回答
0

这个方法对我很有用,检查它可能对你们有帮助。

1)就用这个webView.setLongClickable(false);

2)在带有css的html中使用:

body {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

3)在html中用这个替换body标签<body oncontextmenu="return false;">

于 2017-07-21T21:22:16.860 回答
0

将此用于科特林

binding.webViewId.setOnLongClickListener(OnLongClickListener { true })

或者

webViewId.setOnLongClickListener(OnLongClickListener { true })
于 2022-01-18T13:53:37.767 回答