如何在android中禁用长按WebView

时间:2013-04-02 12:37:19

标签: android webview android-webview

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

1) android:longClickable="false"

2) webView.setLongClickable(false);

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

所以请帮忙。

5 个答案:

答案 0 :(得分:9)

要停用长按,您需要首先启用长按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文档here

答案 1 :(得分: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;
}

答案 2 :(得分:0)

试试这个:

webView.setOnLongClickListener(null);

答案 3 :(得分:0)

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

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

要消除长时间点击造成的震动,你可以尝试一下。

mWebView.setHapticFeedbackEnabled(false);

答案 4 :(得分:0)

此方法对我有用,请查看它可能对您有帮助。

1)只需使用此webView.setLongClickable(false);

即可

2)在html中使用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;
}

3)用html <body oncontextmenu="return false;">

替换body标签