我想从Webview中选择Text,然后突出显示该单词的选定显示。有人有想法吗?使用javascript不起作用,因为getSelection函数在android webview上没有返回任何内容。
请帮忙。
答案 0 :(得分:0)
你有没有看过:
mainpage.showFindDialog("Alice", true);
其中主页是WebView ...
这将在webview上方弹出一个输入文本的栏 - 然后突出显示文本的第一个匹配项。有箭头跳到下一个等等......
除非你的意思是你想突出某些词 - 并让它们保持这种状态 - 那么你需要注入一些javascript来做一个突出显示功能。
答案 1 :(得分:0)
据我所知,您无法在桌面浏览器上(使用鼠标)选择Android触控设备上的文字。
似乎在Android设备上选择文本的方式只能复制到剪贴板或由本机“共享”应用程序使用。
选择text =>将其复制到Clipboard =>使用ClipboardManager取回它。
我可能不像你希望的那样简单和流畅,但也许它会为你效劳:)
获得所选文本的值后,您可以随时将其传递给在html中搜索/替换它的javascript函数,并通过向其添加/填充一些html来突出显示它。
链接到ClipboardManager。 http://developer.android.com/reference/android/text/ClipboardManager.html
以下是使用鼠标在常规桌面浏览器上获取所选文本的演示:
尝试在Android设备上运行相同的操作。文本选择的工作方式不同。我猜它是处理选择的共享/剪贴板管理器,而不是浏览器本身。
祝你好运,希望你找到一个有效的解决方案,并乐于听到它。答案 2 :(得分:0)
以下代码会将您的文本复制到剪贴板,然后从剪贴板中获取文本并进行搜索..
private void emulateShiftHeld(WebView view)
{
try
{
KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
shiftPressEvent.dispatch(view);
}
catch (Exception e)
{
Log.e("dd", "Exception in emulateShiftHeld()", e);
}
}
以下代码将突出显示您选择的文字......
ClipboardManager ClipMan = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipMan.setText(ClipMan.getText().toString());
wb.findAll(ClipMan.getText().toString());
try
{
Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
m.invoke(wb, true);
}
catch (Throwable ignored){}