【问题标题】:How to highlight epub text in android如何在android中突出显示epub文本
【发布时间】:2013-01-05 04:50:07
【问题描述】:

通过阅读有关 stackoverflow 的一些问答,我了解到 webview 可能是显示 epub 文件的好选择。

在下面的帖子中,它提到您也可以在 webview 中突出显示。 render the epub book in android?

谁能指导我如何在网络视图中突出显示某些文本? 大约 2 个月前在以下线程中提出了类似的问题,但尚未收到答案。 https://stackoverflow.com/questions/12948352/highlight-unhighlight-some-text-permanently-in-epub-file-in-android

请帮助我弄清楚如何在 android 中为 epub 阅读器实现突出显示功能。 谢谢。

【问题讨论】:

  • 您希望能够永久保存对 epub 文件的更改?我不认为这是可能的,因为WebView 是只读的......不过你也许可以使用 JavaScript 并跟踪它的变化。
  • 感谢您的回复。我不认为 WebView 能够保存更改。但基本上,我想做的是像 iPad 上的 iBook 阅读器。我想突出显示或将 cmets 添加到 epub。我应该只使用标签来显示 epub 文本吗?
  • 我认为这不会太容易;您必须制作自己的 epub 渲染器/查看器。例如这是一个PDF renderer;我不确定 epub 渲染器是如何工作的。或者,同样,您可以尝试使用 WebView 中的 JavaScript 接口来更改文档(并可能以某种方式保存这些更改)。

标签: android epub


【解决方案1】:
         webview.findAll(htmlTextStr);
         webview.setSelected(true);
         webview.findNext(true);

试试这个,htmlTextStr 必须是你要突出显示的文本

【讨论】:

    【解决方案2】:
    我根据我在为 android 和 ios 开发原生 epub 播放器的经验给出这个答案。 我以这种方式实现了它。 这是我完成文本突出显示的方式 - 一旦你的 url 在 onload 回调中加载到 webview 中,像这样将 jquery lib 注入到 webview dom 私人无效 addJQueryJS() { 字符串路径 = "file:///android_asset/JSLibraries/jquery.min.js"; 字符串数据 = "{\"MethodName\":\"onJQueryJSLoaded\",\"MethodArguments\":{}}"; String callBackToNative = " jsInterface.callNativeMethod('jstoobjc:"+data+"');"; 字符串脚本 = "函数 includeJSFile()" +"{" +“函数加载脚本(网址,回调)” +"{" +"var script = document.createElement('script');" +"script.type = '文本/javascript';" +"script.onload = function () {" +“回调();” +"};" +"script.src = url;" +"if(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0])" +"{" +"(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);" +"}" +“其他{回调();}” +"}" +"loadScript('"+path+"', function ()" +"{" +callBackToNative +"});" +"} ; includeJSFile();"; loadUrl("javascript:"+script); } 将每个单词包装成具有唯一 id 的 span 然后创建一个js文件并注入与jquery相同的内容并在其中编写触摸方法 函数 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('背景色','rgba(0,0,255,0.3)'); } } }; 您还可以获得单词 x,y 宽度高度值。因此您可以在本机视图上显示开始、结束可拖动引脚。 您可以通过将突出显示的第一个和最后一个单词 id 保存到 db 或某个持久存储中来保存突出显示。下次当用户打开这本书时,获取这些单词 id 并突出显示这些跨度。

    【讨论】:

      猜你喜欢
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多