Я хочу, чтобы отключить встроенное контекстное меню, которое отображается при выборе какого-либо текст, то один с выбрать все, копирования, доли кнопок и поиск , Однако я не хочу самостоятельно отключать выбор. В идеале я хотел бы расширить меню на самом деле, но, честно говоря, я более чем прекрасно понимаю, просто отключив его. С текстовыми полями и т. П. Он имеет тенденцию быть относительно простым из документации, которую я нашел, но я просто не могу понять, как сделать эту работу с XWalkView
/CordovaWebView
. Возможно, я просто искал совершенно неправильный угол.Отключить контекстное меню выбора в пешеходном (Cordova)
5
A
ответ
-2
Этот CSS должен предотвратить контекстное меню как в Android и IOS, как указано в шаблоне 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
«Я, однако, не хочу отключать выбор самостоятельно». –
1
У меня есть обходной путь.
Для WebView
есть решение, но оно не работает для XWalkView
:
WebView selection menu workaround
Мой Gradle включает compile 'org.xwalk:xwalk_core_library:14.43.343.17'
Мое решение, основная идея в методе 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
Я пробую решение Warabei, но оно не работает по 15.44.384.13. Улучшаю найти кросс версию 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);
}
...
Чтобы отключить контекстное меню выбора:
@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. Отключить контекстное меню выбора в Safari iOS
- 2. Отключить контекстное меню css?
- 3. Как отключить контекстное меню?
- 4. Отключить/Скрыть контекстное меню выбора текста в Android WebView, созданное Cordova
- 5. Как отключить контекстное меню WebView?
- 6. Отключить контекстное меню по щелчку
- 7. Отключить контекстное меню правой кнопкой?
- 8. Отключить контекстное меню контекстного контекстного меню Firefox
- 9. Отключить контекстное меню и меню rightclick
- 10. Отключить контекстное меню в ComboBox в C#
- 11. Android: Включить отключить контекстное меню Пункт
- 12. Невозможно отключить контекстное меню в CKEditor 4.4.2
- 13. Как отключить контекстное меню браузера в qooxdoo?
- 14. MS Access отключить контекстное меню в подформате
- 15. Как отключить контекстное меню в WPF?
- 16. Отключить контекстное меню ckeditor в версии 4.4.6
- 17. Как переопределить контекстное меню выбора текста webview?
- 18. Скрыть контекстное меню без отключения выбора текста
- 19. Как вызвать контекстное меню для пустого выбора?
- 20. Контекстное меню Datagrid только для одного выбора
- 21. Контекстное контекстное меню в Netbeans
- 22. Отключить контекстное меню CKEditor Клиентская сторона
- 23. WPF XAML Как отключить контекстное меню?
- 24. Отключить выноску (контекстное меню) на Android
- 25. Отключить контекстное меню заголовка главного окна
- 26. Отключить контекстное меню управления веб-браузером
- 27. qt/C++ контекстное меню - отключить элемент
- 28. Отключить контекстное меню для текстового поля
- 29. Как отключить контекстное меню значка окна
- 30. devexpress wpf gridcontrol отключить контекстное меню
Итак ... Кто-нибудь заботиться, чтобы объяснить, почему это получило downvote? –
Вы когда-нибудь могли это решить? –
@ Kufuma К сожалению нет, даже наложил на него щедрость 50, но он проигнорировался :( –