Desidero disattivare il menu nativo contestuale che viene visualizzato quando si seleziona del testo, quello con la selezionare tutti, copia, parti e ricerca pulsanti . Tuttavia, non desidero disabilitare le selezioni. Idealmente vorrei ampliare il menu in realtà, ma onestamente, sono più che perfettamente corretto disabilitandolo. Con i campi di testo e simili tende ad essere relativamente semplice dalla documentazione che ho trovato, ma non riesco a capire un modo per farlo funzionare con XWalkView
/CordovaWebView
. Potrebbe essere che sto cercando solo nell'angolo completamente sbagliato però.Disabilita menu di selezione contestuale a strisce pedonali (Cordova)
5
A
risposta
-2
Questa CSS dovrebbe evitare che i menu contestuali, sia Android e IOS, come indicato nel modello cordova
* {
-webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */
}
body {
-webkit-touch-callout: none; /* prevent callout to copy image, etc when tap to hold */
-webkit-text-size-adjust: none; /* prevent webkit from resizing text to fit */
-webkit-user-select: none; /* prevent copy paste, to allow, change 'none' to 'text' */
}
+0
"Non voglio comunque disabilitare le selezioni da soli." –
1
ho una soluzione.
Per WebView
c'è una soluzione, ma non funziona per XWalkView
:
WebView selection menu workaround
mio Gradle include compile 'org.xwalk:xwalk_core_library:14.43.343.17'
La mia soluzione, l'idea principale nel metodo onAttachedToWindow
:
public class XWalkWebView extends XWalkView {
public XWalkWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
private ActionMode.Callback mOriginalCallback;
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
try {
View innerChild = ((ViewGroup) getChildAt(0)).getChildAt(0);
Field contentViewField = innerChild.getClass().getDeclaredField("mContentView");
contentViewField.setAccessible(true);
XWalkContentView xWalkContentView = (XWalkContentView) contentViewField.get(innerChild);
Field contentViewCoreField = xWalkContentView.getClass().getSuperclass().getDeclaredField("mContentViewCore");
contentViewCoreField.setAccessible(true);
ContentViewCore viewCore = (ContentViewCore) contentViewCoreField.get(xWalkContentView);
viewCore.setContainerView(this);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
@Override
public ActionMode startActionMode(ActionMode.Callback callback) {
mOriginalCallback = callback;
ActionMode.Callback c = new // your callback...
return super.startActionMode(c);
}
}
0
Provo la soluzione di Warabei ma non funziona su 15.44.384.13. Miglioro trovare versioni trasversali ContentViewCore:
public class XWalkWebView extends XWalkView {
...
private Field getFields(Class clazz){
for(Field field:clazz.getDeclaredFields()){
if(ContentViewCore.class == field.getType()){
return field;
}
}
clazz = clazz.getSuperclass();
if(clazz!=null && clazz!=Object.class){
Field field = getFields(clazz);
if(field!=null)return field;
}
return null;
}
private void inject(View view){
Field field = getFields(view.getClass());
if(field!=null){
field.setAccessible(true);
try {
ContentViewCore viewCore = (ContentViewCore) field.get(view);
viewCore.setContainerView(this);
return;
}catch(Exception e){
}
}
if(view instanceof ViewGroup){
ViewGroup viewGroup = (ViewGroup)view;
int count = viewGroup.getChildCount();
for(int i = 0;i<count;i++){
inject(viewGroup.getChildAt(i));
}
}
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
inject(this);
}
...
Per disabilitare contestuale menu di selezione:
@Override
public ActionMode startActionMode(ActionMode.Callback callback) {
return new ActionMode() {
@Override
public void setTitle(CharSequence charSequence) {
}
@Override
public void setTitle(int i) {
}
@Override
public void setSubtitle(CharSequence charSequence) {
}
@Override
public void setSubtitle(int i) {
}
@Override
public void setCustomView(View view) {
}
@Override
public void invalidate() {
}
@Override
public void finish() {
}
@Override
public Menu getMenu() {
return null;
}
@Override
public CharSequence getTitle() {
return null;
}
@Override
public CharSequence getSubtitle() {
return null;
}
@Override
public View getCustomView() {
return null;
}
@Override
public MenuInflater getMenuInflater() {
return null;
}
};
}
Problemi correlati
- 1. Menu contestuale iPhone/iPad
- 2. come chiamare menu contestuale
- 3. Menu contestuale WPF e ListView
- 4. Android Listener respingere menu contestuale
- 5. QTab menu di scelta rapida del menu contestuale
- 6. Disabilita selezione drop down disabilita l'articolo
- 7. di Windows menu contestuale shell icona
- 8. Disabilita Chrome per Cordova uscita App
- 9. Crea elemento personalizzato in jsTree Menu contestuale
- 10. Come implementare il menu contestuale per NSCollectionView
- 11. Come aggiungere un menu contestuale a C# (VS 2008)?
- 12. C# Aggiungi checkbox al menu contestuale WinForms
- 13. L'integrazione in Windows Explorer menu contestuale
- 14. UITableViewController - disabilita la selezione
- 15. UIPickerView disabilita selezione riga
- 16. jQuery Menu contestuale del tasto destro Aiuto!
- 17. tkinter abilita/disabilita menu
- 18. Modifica stile editatext stile popup menu contestuale
- 19. VSTO (a livello di documento): menu contestuale individuale in Excel (menu clic destro)
- 20. Mostra casella di controllo Menu Menu o Menu contestuale di un pulsante
- 21. Disabilita selezione multipla?
- 22. Disabilita selezione richtextbox wpf
- 23. Aggiungi metodo in Android Copia/Incolla Menu contestuale globale?
- 24. Menu di scelta rapida riga Datagrid WPF - Disabilita la voce di menu
- 25. WPF: Visualizzazione di un menu contestuale articoli di un GridView
- 26. Rilevamento di un menu contestuale incolla nel browser con jquery
- 27. Aggiungi 'Cancellare le cartelle vuote' al menu contestuale di Windows
- 28. menu contestuale per la rimozione di elementi in listview
- 29. Disabilita selezione riga in TableView
- 30. Ripristina tutti i menu a discesa di selezione
Quindi ... Chiunque cura di spiegare perché questo ha un downvote? –
Sei mai riuscito a risolvere questo? –
@Kufuma Sfortunatamente no, anche se abbiamo messo una taglia di 50, ma è stato ignorato :( –