突出显示文本功能,如 google play book
Posted
技术标签:
【中文标题】突出显示文本功能,如 google play book【英文标题】:Highlight Text feature like google play book 【发布时间】:2013-05-19 21:04:00 【问题描述】:我希望我的 android 应用程序在 WebView
中突出显示文本。类似于 Google play book 中的功能。有谁知道如何实现这一目标?
我使用的是WebView
,因为我的内容是 html 格式。
基本上讲这个效果:
【问题讨论】:
呀。我在谈论这个..所以你的帮助 您希望在选择时或何时突出显示文本? 选择时。我现在使用网络视图,因为我的内容是 html 形式。但不能在网络视图上实现这一点。任何其他选项 @SuhailMehta:你有没有找到任何可行的方法?我正在寻找在我的 Textview 或 Webview 中提供的类似功能,这些功能将显示 HTML。 【参考方案1】:您看到的蓝色选择是选择文本时标准 android 环境的一部分。所以这应该可以在您的标准 webview 上运行,而不需要任何自定义代码。 => 我不再相信这是真的。好像不是。
然而,绿色(黄色、橙色、红色……)选择是自定义的。
您可以从选择事件中读出所选文本,并使用该信息更新 html 内容,将文本包装在具有背景颜色集的 span 中。
另一种方法是使用 javascript 并在您的 web 视图中启用 javascript。但是不确定如何完成。
检查该方法的一些来源是https://github.com/btate/BTAndroidWebViewSelection 和Android: How to select text from WebView, and highlight it onclick
从 WebView 详细信息中选择文本
要在WebView
上进行文本选择,您可以使用以下 sn-p (from this question)。在(上下文)菜单中的按钮单击(或其他事件)上触发此事件。
private void emulateShiftHeld(WebView view)
try
KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
shiftPressEvent.dispatch(view);
Toast.makeText(this, "select_text_now", Toast.LENGTH_SHORT).show();
catch (Exception e)
Log.e("dd", "Exception in emulateShiftHeld()", e);
【讨论】:
你能更具体地了解选择事件吗 我已经用更多细节更新了这个问题。显然它不像我想象的那样默认。看起来即使选择也需要一些自定义代码。示例添加到我的原始答案中。【参考方案2】:从 API 级别 11 开始,您可以使用TextView
's textIsSelectable
flag。
编辑:尽管现在已经对问题进行了编辑,特别提到了 WebView
,但 OP @Suhail 的评论“我的内容是 html 形式”并没有完全取消 TextView
的资格,因为它还可以呈现一些基本的 HTML。
【讨论】:
在这个用例中你如何看待这与 webview 的结合? @hcpl 问题未指定上下文,例如WebView
或 TextView
确实,我会为此添加一个更正。仅在问题的 cmets 中提到这是针对 webview 的。【参考方案3】:
如果您使用 WebView 尝试将 Mozilla PDF.JS 集成到可以呈现 PDF 的位置。其中也可以包含图像。
【讨论】:
以上是关于突出显示文本功能,如 google play book的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 我们将弹出的菜单类型称为啥,如突出显示文本时所见