2012-01-31 36 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){}