【问题标题】:How to disable long click on WebView in android如何在android中禁用长按WebView
【发布时间】:2013-04-02 12:37:19
【问题描述】:
我想禁用对 webView 的长按,所以我无法选择其中的文本,我使用了三种方法来做到这一点,但没有任何效果:
1) android:longClickable="false"
2) webView.setLongClickable(false);
3) webView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return true;
}
});
所以请帮忙。
【问题讨论】:
标签:
android
webview
android-webview
【解决方案1】:
要禁用长按,您需要先启用长按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。
【解决方案2】:
这对我有用,如 https://stackoverflow.com/a/12793740/5035343 所示
mWebView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return true;
}
});
mWebView.setLongClickable(false);
而要消除长按引起的震动,你可以试试这个。
mWebView.setHapticFeedbackEnabled(false);
【解决方案3】:
试试这个:
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;
}
【解决方案4】:
试试这个:
webView.setOnLongClickListener(null);
【解决方案5】:
这个方法对我有用,看看对大家有没有帮助。
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;">
【解决方案6】:
在 kotlin 中使用它
binding.webViewId.setOnLongClickListener(OnLongClickListener { true })
或
webViewId.setOnLongClickListener(OnLongClickListener { true })