контекстное меню веб-просмотра на выделенном тексте - PullRequest
4 голосов
/ 28 мая 2019

Я пытался настроить контекстное меню для веб-просмотра, которое появляется при выборе текста в веб-просмотре.

В основном я хочу добавить или удалить элементы в меню.И добавьте какое-нибудь пользовательское событие при нажатии элемента.

Я уже пробовал несколько решений, таких как ссылки ниже, но безуспешно.Все, что я в итоге получаю, это диалоговое меню.

https://developer.android.com/guide/topics/ui/menus.html#CAB

enter image description here

1 Ответ

0 голосов
/ 20 июля 2019

После долгих проб и ошибок я пришел к разумному решению. Просто разместите его здесь для полноты, на случай, если кто-нибудь столкнется с подобной проблемой.

Решением было создание альтернативного меню, которое я реализовал, используя PopupWindow. И я позвонил по длинному нажатию, используя GestureDetector.

myWebView.setWebChromeClient(new MyWebChromeClient());
mGestureDetector = new GestureDetector(getActivity(), new CustomGestureListener());
mGestureDetector = new GestureListener(getActivity(),myWebView);
final GestureDetector gd = new GestureDetector(getActivity(), mGestureDetector);

    //====== web-view popup menu
    myWebView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            gd.onTouchEvent(motionEvent);

            return false;
        }
    });

Слушатель жестов довольно прост, код можно найти здесь

Остальное взаимодействие с данными веб-просмотра осуществляется с помощью JavaScript, с использованием приведенного ниже кода, подробнее об этом можно прочитать в руководстве по google dev

WebView xview = (WebView)view;
xview.loadUrl("javascript:alert(showAndroidToast('underline'))");

Что ж, это хорошо для меня, результат можно увидеть на рисунке ниже, надеюсь, он кому-нибудь поможет.

Или, если у кого-то нет лучшего решения / кода.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...