webview.findnext () начать выделение с текущей позиции касания на экране - PullRequest
0 голосов
/ 16 мая 2018

Я новичок в андроид студии. Я работаю над простым проектом. Он использует веб-просмотр, который загружает HTML-страницу. Я также использую панель действий для поиска, обновления, ... на странице ниже:

enter image description here

Нажав кнопку поиска, метод findAllAsync () используется для поиска и выделения всех совпадений на странице (совпадения отображаются желтым цветом). Следующая кнопка на панели действий использует метод findnext (true) и позволяет пользователю перемещаться между выделенными совпадениями. При использовании этого метода следующий выделен красным цветом:

  next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            st = et.getText().toString();
            if(!st.equals("")&& st!=null) {

               ourBrow.findNext(true);

            }//not null

        }//on click

    });// next Button click

Если я только прокручиваю или увеличиваю веб-просмотр, все в порядке, и поиск следующего продолжается с предыдущего на странице. Однако если я коснусь где-нибудь в веб-просмотре, а затем нажму кнопку «Далее», выделение красным цветом не будет продолжено с предыдущей позиции на странице. Например, если предыдущий выделенный красным цветом находится в первой части страницы, и я касаюсь конца страницы, и когда я нажимаю следующую кнопку, средние желтые совпадения экранируются, а последний, находящийся в конце страницы, выделяется в красный цвет и красная подсветка продолжаются с этой позиции.

Так как мне нужно, пользователь может продолжить поиск с предыдущей позиции, и касание экрана не влияет на этот порядок, я много искал. Я пытался отключить сенсорное событие веб-просмотра, но сохраняя возможность масштабирования и прокрутки на основе , Android отключал WebView touch, но продолжал увеличивать / прокручивать . Но моя проблема все еще не решена. Пожалуйста, помогите мне решить эту проблему.

спасибо.

Edit:

Чтобы решить эту проблему, я попытался очистить фокус от вида ( Как убрать фокус, не устанавливая фокус на другой элемент управления? ). Но это не работает:

View current = getCurrentFocus();
                    if (current != null) current.clearFocus();
                    ourBrow.findNext(true);

1 Ответ

0 голосов
/ 16 мая 2018

Я бы порекомендовал следующий не лучший подход (и это зависит от вашей веб-страницы), но он будет работать, визуализировать содержимое вашей веб-страницы в html, используя:

webview.loadData(URLEncoder.encode(result).replaceAll("\\+", " "), "text/html", Encoding.UTF_8.toString());

Чем вы хотите, чтобы ваш текст выделился, выделите его так, как вам нужно, и затем верните его на веб-страницу следующим образом:

myTextView.setText(Html.fromHtml("Your HTML Page"));

API после слепка:

myTextView.setText(Html.fromHtml("Your HTML Page", Html.FROM_HTML_MODE_COMPACT));

Надеюсь, это поможет

...