2012-01-31 74 views
0

我想从Webview中选择文本,然后仅突出显示该单词的选定显示。有人有一个想法?使用JavaScript不起作用,因为getSelection函数在android webview上不会返回任何内容。Android - 突出显示WebView中的单词/短语

请帮忙。

回答

0

。您调查:

mainpage.showFindDialog("Alice", true); 

其中炫魅是的WebView ...

这将弹出的WebView上述其中输入文本酒吧 - 再突出的第一次出现文本。有箭头跳转到下一个等...

除非你的意思是你想强调某些单词 - 并让他们保持这种方式 - 那么你需要注入一些JavaScript做一个突出显示功能。

+0

谢谢你的回答,但这不是我要找的。我想用选择锚点手动选择文本,并且在长时间保存那个选择区域之后,我想永久地突出显示(仅)选定文本的出现。 – Corje 2012-02-10 09:39:23

0

据我所知,您无法在桌面浏览器上(使用鼠标)在Android触控设备上选择文字。

看起来像在android设备上选择文本的方式只能复制到剪贴板或由本地“共享”应用程序使用。

选择文本=>将其复制到Clipboard =>使用ClipboardManager将其取回。

我可能不是那么简单和顺利,你所期待的,但也许它会工作为你:)

一旦你选定文本的价值,你可以随时把它传递给一个javascript函数在你的html中搜索/替换它,并通过添加/填充一些html来突出显示它。

链接到剪贴板管理器。 http://developer.android.com/reference/android/text/ClipboardManager.html

这里有定期桌面浏览器与鼠标获取所选文本的演示:

http://bit.ly/AwggX9

尝试用你的Android设备上运行相同。文本选择不以相同的方式工作。我想它是处理选择的共享/剪贴板管理器,而不是浏览器本身。

祝你好运,希望你找到一个有效的解决方案,并会很乐意听到它。

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){}