Ich wünsche dem nativen Kontextmenü zu deaktivieren, die angezeigt wird, wenn Sie einen Text auswählen, der mit dem alle wählen, Kopie, Aktien und Suche Tasten . Ich möchte jedoch die Auswahl nicht selbst deaktivieren. Idealerweise würde ich das Menü eigentlich erweitern wollen, aber ehrlich gesagt, es ist mehr als in Ordnung, es einfach zu deaktivieren. Bei Textfeldern und ähnlichem ist es aus der Dokumentation, die ich gefunden habe, relativ einfach, aber ich kann einfach nicht herausfinden, wie dies mit XWalkView
/CordovaWebView
funktioniert. Mag sein, dass ich nur in der falschen Ecke suche.Disable Kontextauswahlmenü in Überweg (cordova)
Antwort
Diese CSS sollte Kontextmenüs in Android und IOS verhindern, wie sie in der cordova Vorlage
gegeben* {
-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' */
}
"Ich möchte die Selektionen jedoch nicht selbst deaktivieren." –
Ich habe eine Abhilfe.
Für WebView
gibt es eine Lösung, aber es funktioniert nicht für XWalkView
:
WebView selection menu workaround
Mein gradle compile 'org.xwalk:xwalk_core_library:14.43.343.17'
Meine Lösung umfasst, die Hauptidee in der onAttachedToWindow
Methode:
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);
}
}
Ich versuche Warabeis Lösung aber es nicht am 15.44.384.13 arbeiten. Ich Verbesserung ContentViewCore Cross-Versionen zu finden:
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);
}
...
Um Kontextauswahlmenü zu deaktivieren:
@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;
}
};
}
- 1. cordova stürzt nach dem Hinzufügen cordova-plugin-Überweg-webview
- 2. cordova build Überweg Peer nicht über Proxy authtenicated
- 3. globaler disable auf iOS 9 in Meteor cordova App
- 4. Kann nicht js Funktion ‚ändern‘ oder ‚bestätigen‘ in Überweg
- 5. Disable Pinch-to-Zoom in iOS 10 in Cordova/Phonegap App
- 6. Wie überschreibt man das Kontextauswahlmenü für die Textauswahl von webview?
- 7. Disable F5 in WebBrowser
- 8. Disable PreserveCultureAttribute in Hangfire
- 9. Disable Scrolling in Div
- 10. Disable Element in Datalist
- 11. Disable Glocke in MacVim
- 12. Disable Tabs in TabLayout
- 13. Cordova Ionic mit Zebrastreifen Plugin Resolution Ausgabe
- 14. Disable UIPickerView
- 15. Disable NHibernate
- 16. disable controlpanel
- 17. Disable GUI, Grafikgeräte in R
- 18. Disable Magnifying Glass in UITextview
- 19. Disable particluar level in log4net
- 20. Disable web.xml Validierung in Ant
- 21. Disable Automatischer Komponententest in PyCharm
- 22. Disable iptables permanent in CentOS
- 23. Disable Zurück-Taste in Digits
- 24. Disable cppcheck in Visual Studio
- 25. Disable zentrale Artikelüberlappung in RecyclerView
- 26. Disable-Tex-Interpreter in Matplotlib
- 27. Disable Double-Shift in pycharm
- 28. Attribut 'disable' in modelformset verwenden
- 29. Flask disable CSRF in Unittest
- 30. Disable icon colorStateList in NavigationView
So ... Wer Pflege zu erklären, warum dies eine Downvote bekam? –
Konnten Sie das jemals lösen? –
@Kufuma Leider nein, sogar eine Prämie von 50 darauf, aber es wurde ignoriert :( –