【问题标题】:Android - is there any Function or Way to Search a specific text in an HTML Webview textAndroid - 是否有任何功能或方法可以在 HTML Webview 文本中搜索特定文本
【发布时间】:2018-08-18 16:25:00
【问题描述】:

所有 Android 程序员您好,有什么方法可以在 HTML Webview 中搜索特定单词?或者让我们说,当你在搜索框中输入一个词并搜索它,然后它会自动滚动到该词或突出显示它,但文本不在 TextView 中,文本是使用 WebView 格式化的?当然,当您在数据库中存储一个段落并且可以轻松搜索它时,它可能是可能的,但问题是它没有像 HTML 那样格式化,所以这可能吗? Please see the image on this link

【问题讨论】:

    标签: java android webview textview


    【解决方案1】:
    For Highlighting search word:
    
        titleWebView.setWebViewClient(new WebViewClient() {
    
            @Override
            public void onPageFinished(WebView view, String url) {
                if (searchText != null && !searchText.equals("")) {
                    int i = titleWebView.findAll(searchText);
                    Toast.makeText(getApplicationContext(), "Found " + i + " results !",
                        Toast.LENGTH_SHORT).show();
                    try {
                        Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
                        m.invoke(titleWebView, true);
                    } catch (Throwable ignored) {
                    }
                    searchText = "";
                }
            }
        });
    

    【讨论】:

    • OP 询问是否有办法在 WebView 中搜索文本,以使搜索到的词突出显示,而不是如何发出 HTTP 请求并将结果转换为字符串。
    • 正如我上面提到的,如果我们以字符串形式从 html 获取数据,那么我们只需检查该字符串是否包含特定单词
    • 但是 OP 正在询问如何在 WebView 中搜索单词和 **automatically scroll to the word or highlight it**。简单地检查 HTML 字符串是否包含特定单词,不会在 WebView 中突出显示该单词。
    • 感谢您为回答我的问题所做的努力。我要试试这个方法。非常感谢大家。上帝保佑
    【解决方案2】:

    您可以通过在 webview 中阅读页面的source 来实现。

    里面

    在webviewclient的onPageFinished()中加入这个方法:

    webView.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+" +
                                            "document.getElementsByTagName('html')[0].innerHTML+'</html>');");
    

    上面调用的方法 processHTML() 的声明有助于 将源 html 处理为 String/JSON Obj。

        @SuppressWarnings("unused")
            @JavascriptInterface
            public String processHTML(final String html)
            {
    //            Log.i("processed html",html);
                Thread OauthFetcher=new Thread(new Runnable() {
    
                    @Override
                    public void run() {
    
                        htmlString= Html.fromHtml(html).toString();
    //                    Log.i("htmlString",htmlString);
                        Gson gson = new Gson();
                        CustomPojoObject obj = gson.fromJson(htmlString, CustomPojoObject.class);
    
                    }
                });OauthFetcher.start();
                return htmlString;
            }
    

    【讨论】:

      猜你喜欢
      • 2020-08-02
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      相关资源
      最近更新 更多