Как выделить текст 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. Таким образом, вы можете показывать начало, конец перетаскиваемых выводов на собственном виде. Вы можете сохранить выделение, сохранив первый и последний идентификатор слова выделения в дБ или в некотором постоянном хранилище. В следующий раз, когда пользователь открывает книгу, получите идентификаторы этих слов и выделите эти интервалы.