studio - Android: deshabilitar la selección de texto en una vista web
para que sirve android accessibility suite (5)
Estoy usando una vista web para presentar algunas cosas formateadas en mi aplicación. Para algunas interacciones (que son específicas de ciertos elementos dom) utilizo javascript y WebView.addJavascriptInterface()
. Ahora, quiero reconocer un toque largo. Desafortunadamente, onLongTouch
, en Android 2.3, se muestran los identificadores para la selección de texto.
¿Cómo puedo desactivar esta selección de texto sin configurar el onTouchListener
y devolver true? (Entonces, la interacción con el "sitio web" ya no funciona.
¡¡Me lo imaginé!! Así es como puedes implementar tu propio oyente de larga duración. En la función longTouch puedes hacer una llamada a tu interfaz de 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!
}
Esto funciona.
Establecer la propiedad webkit css -webkit-user-select
en none
resolvería el problema.
Ejemplo de CSS para deshabilitar la selección:
* {
-webkit-user-select: none;
}
Esto funcionó para mí
mWebView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return true;
}
});
mWebView.setLongClickable(false);
No he probado, si no quieres la vibración causada por el clic largo, puedes intentar esto:
mWebView.setHapticFeedbackEnabled(false);
Parece que cortar / pegar mediante pulsación larga está desactivado si utilizó
articleView.setWebChromeClient(new WebChromeClient(){...})
Ver https://bugzilla.wikimedia.org/show_bug.cgi?id=31484
Entonces, si está utilizando setChromeClient y quiere hacer un clic largo para comenzar a copiar / pegar, haga lo siguiente:
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();
}
});
Parece que la única opción es establecer en onTouchListener
y escribir su propio código para detectar un clic largo. Luego devuelve true
si es un clic largo y false
contrario.