Как выделить текст EPUB в Android

Прочитав некоторые вопросы и ответы по stackru, я понял, что webview может быть хорошим вариантом для отображения файлов epub.

В следующей теме упоминается, что вы также можете выделить в веб-просмотре. сделать книгу epub в андроиде?

Кто-нибудь может подсказать мне, как мы можем выделить текст в веб-представлении? Аналогичный вопрос задавался около 2 месяцев назад в следующей ветке, но пока не получил ответа. https://stackru.com/questions/12948352/highlight-unhighlight-some-text-permanently-in-epub-file-in-android

Пожалуйста, помогите мне понять, как я могу реализовать функцию подсветки для читателей epub в Android. Спасибо.

2 ответа

         webview.findAll(htmlTextStr);
         webview.setSelected(true);
         webview.findNext(true);

Попробуйте это, htmlTextStr должен быть ваш текст, который должен быть выделен

Я даю этот ответ, основываясь на своем опыте разработки нативного epub player для android и ios. Я добился этого таким образом. Это способ, которым я сделал подсветку текста - как только ваш URL загружается в веб-просмотр в onload, перезвоните, вставьте jquery lib в dom веб-просмотра, как этот закрытый void addJQueryJS() 
        {
            String path = "file:///android_asset/JSLibraries/jquery.min.js";
            String data = "{\"MethodName\":\"onJQueryJSLoaded\",\"MethodArguments\":{}}";
            String callBackToNative  = " jsInterface.callNativeMethod('jstoobjc:"+data+"');";
            String script = "function includeJSFile()"
                                   +"{"
                                   +"function loadScript(url, callback)"
                                   +"{"
                                   +"var script = document.createElement('script');"
                                   +"script.type = 'text/javascript';"
                                   +"script.onload = function () {"
                                   +"callback();"
                                   +"};"
                                   +"script.src = url;"
                                   +"if(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0])"
                                   +"{"
                                   +"(document.getElementsByTagName('head')[0] || document.getElementsByTagName('тело') [0]) AppendChild(сценарий);". +"}"
                                   +"else { callback(); }"
                                   +"}"
                                   +"loadScript('"+path+"', function ()"
                                   +"{"
                                   +callBackToNative
                                   +"});"
                                   +"}; includeJSFile();";
            loadUrl("javascript: "+script);
        } оберните каждое слово в промежуток с уникальным идентификатором, затем создайте файл js и вставьте в него те же методы, что и в jquery, и напишите touch touch function onTouchMove(e)
    {
        e.preventDefault();
        if((touchendStartStick == true || touchendEndStick == true) && currHVO!= undefined)
        {
            var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
            var obj = document.elementFromPoint(touch.pageX-window.pageXOffset,touch.pageY-window.pageYOffset);

            if($(obj).is('span'))
            {
                $(obj).css('background-color','rgba(0,0,255,0.3)');
            }
        }
    }; Вы также можете получить значения высоты слова x,y width. Таким образом, вы можете показывать начало, конец перетаскиваемых выводов на собственном виде. Вы можете сохранить выделение, сохранив первый и последний идентификатор слова выделения в дБ или в некотором постоянном хранилище. В следующий раз, когда пользователь открывает книгу, получите идентификаторы этих слов и выделите эти интервалы.
Другие вопросы по тегам