如何突出显示文本视图中包含的部分文本?

马可·杜法尔

如果可能的话,如何突出显示文本视图中包含的部分文本并将其检索回代码以用于其他用途?

马可·杜法尔

通过将WebView与Jquery移动插件方法swipe和Java JavascriptInteface结合使用,我终于实现了我想做的事情

首先,我将此html文件放置在项目的资产文件夹中,以便可以将其加载到WebView中:

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Reader</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script>
    function addWords(val) {
        if (val != " ")
            $("#cont").append("<span>" + val + "</span>");
        else
            $("#cont").append("&nbsp;");
    }
</script>
<style>
    html,
    body {
        padding: 0;
        margin: 0;
    }

    div.box {
        width: 30em;
        height: 3em;
        background-color: #108040;
    }

    .swipe {
        background-color: #F0A90F;
    }

    #cont {
        display: inline-block;
        margin: 5px;
        word-wrap: break-word;
    }

    span {
        word-wrap: break-word;
    }
</style>
</head>

<body>
<div id="cont">
</div>

<script>
    $(function() {
        // Bind the swipeHandler callback function to the swipe event on div.box
        $("div#cont").on("swipe", swipeHandler);

        // Callback function references the event target and adds the 'swipe' class to it
        function swipeHandler(event) {
            if ($(event.target).prop("tagName") != "DIV") {
                $(event.target).addClass("swipe");
                window.INTERFACE.getHighlightedText($(event.target).text());
            }
        }
    });
</script>

</body>

</html>    

从RSS feed链接获取文章全文后,我将文章中的所有单词附加到div#cont并将它们放在span标签中:

if(isOnline()){
        showCustomProgressDialog();
        WebView wb=(WebView)findViewById(R.id.webViewReader);
        RelativeLayout parent=(RelativeLayout)wb.getParent();
        parent.setVisibility(View.VISIBLE);
        wb.getSettings().setJavaScriptEnabled(true);
        wb.getSettings().setDomStorageEnabled(true);
        wb.addJavascriptInterface(theInterface, "INTERFACE");
        wb.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
        wb.getSettings().setSupportMultipleWindows(true);
        wb.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1: it-IT) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
        wb.loadUrl("file:///android_asset/index.html");
        wb.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                super.shouldOverrideUrlLoading(view,url);
                return false;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                try {
                    JSONObject root = new JSONObject(home.getStringFromFile(getFilesDir() + "/" + home.DASHBOARDJSONFILENAME));
                    JSONObject innerObj = root.getJSONObject("dashboard").getJSONObject("lastarticle");
                    innerObj=new parseArticleFromUrl().execute("https://www.readability.com/api/content/v1/parser?url="+innerObj.getString("link").replace("\\/", "/")+"&token=YOURTOKEN").get();
                    String a="Nothing found";
                    if(innerObj!=null){
                            String content = innerObj.getString("content");
                            if(content!=null){
                                Document doc=Jsoup.parse(content);
                                a=doc.text();
                            }
                    }
                    StringTokenizer tokens = new StringTokenizer(a, " ");
                    for(;tokens.hasMoreTokens();)
                    {
                        String curr_token=tokens.nextToken();
                        curr_token = curr_token.replaceAll("\"", "\\\\\"");
                        view.loadUrl("javascript:addWords('"+curr_token+"');");
                        view.loadUrl("javascript:addWords(' ');");
                    }
                    ldialog.dismiss();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        });
    }    

然后通过使用JavascriptInteface类,获得突出显示的单词的定义:

public class MyJavaScriptInterface
{
    private String strval;

    public MyJavaScriptInterface()
    {
        strval = null;
    }

    @SuppressWarnings("unused")

    @JavascriptInterface

    public void getHighlightedText(String hword)
    {
        if(!hword.isEmpty())
        {
            strval = hword;
            new getWordDefinition().execute("http://api.wordnik.com/v4/word.json/"+hword+"/definitions?limit=1&includeRelated=false&useCanonical=false&includeTags=false&api_key=a2a73e7b926c924fad7001ca3111acd55af2ffabf50eb4ae5");
        }
        else
            strval="";
    }

    public String returnHtml()
    {
        return strval;
    }
}    

结果画面

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

突出显示部分文本

来自分类Dev

突出显示文本视图中的文本

来自分类Dev

如何在UITextField中突出显示部分文本?

来自分类Dev

如何在文本视图中突出显示 Java 语法?

来自分类Dev

视图中是否包含帮助文本显示?

来自分类Dev

是否可以突出显示输入按钮值的部分文本?

来自分类Dev

如何在tinymce编辑器中突出显示部分文本时发出警报

来自分类Dev

在表格视图中显示文本

来自分类Dev

如何在HTML部分中用双引号''突出显示文本

来自分类Dev

如何突出显示和提取包含PDF链接的文本?

来自分类Dev

AngularJS-突出显示部分文本会导致非英语单词损坏

来自分类Dev

AngularJS-突出显示部分文本会导致非英语单词损坏

来自分类Dev

如何突出显示QTreeWidgetItem文本

来自分类Dev

在自定义适配器列表视图中突出显示搜索到的文本

来自分类Dev

在自定义适配器列表视图中突出显示搜索到的文本

来自分类Dev

在SwiftUI中突出显示文本的特定部分

来自分类Dev

如何在导航标题视图中居中显示文本

来自分类Dev

如何在Java中的文本视图中显示数组

来自分类Dev

如何使用在列表项单击时动态生成的文本视图标签突出显示我在列表视图中的当前位置

来自分类Dev

如何在Android文本视图中显示包含图像和RTF的段落。内容可以存储在xml中

来自分类Dev

如何在文本区域中突出显示文本的一部分

来自分类Dev

如何使用Twitter Bootstrap折叠来显示部分文本,然后显示其余部分

来自分类Dev

在Android文本视图中显示的奇怪字符

来自分类Dev

在UIAlert视图中显示推送通知文本

来自分类Dev

文本视图中显示空日期时差

来自分类Dev

在文本视图中显示通知 Firebase

来自分类Dev

如何使用replaceAll删除部分文本

来自分类Dev

如何替换TextView上的部分文本?

来自分类Dev

如何从符号末尾删除部分文本?

Related 相关文章

  1. 1

    突出显示部分文本

  2. 2

    突出显示文本视图中的文本

  3. 3

    如何在UITextField中突出显示部分文本?

  4. 4

    如何在文本视图中突出显示 Java 语法?

  5. 5

    视图中是否包含帮助文本显示?

  6. 6

    是否可以突出显示输入按钮值的部分文本?

  7. 7

    如何在tinymce编辑器中突出显示部分文本时发出警报

  8. 8

    在表格视图中显示文本

  9. 9

    如何在HTML部分中用双引号''突出显示文本

  10. 10

    如何突出显示和提取包含PDF链接的文本?

  11. 11

    AngularJS-突出显示部分文本会导致非英语单词损坏

  12. 12

    AngularJS-突出显示部分文本会导致非英语单词损坏

  13. 13

    如何突出显示QTreeWidgetItem文本

  14. 14

    在自定义适配器列表视图中突出显示搜索到的文本

  15. 15

    在自定义适配器列表视图中突出显示搜索到的文本

  16. 16

    在SwiftUI中突出显示文本的特定部分

  17. 17

    如何在导航标题视图中居中显示文本

  18. 18

    如何在Java中的文本视图中显示数组

  19. 19

    如何使用在列表项单击时动态生成的文本视图标签突出显示我在列表视图中的当前位置

  20. 20

    如何在Android文本视图中显示包含图像和RTF的段落。内容可以存储在xml中

  21. 21

    如何在文本区域中突出显示文本的一部分

  22. 22

    如何使用Twitter Bootstrap折叠来显示部分文本,然后显示其余部分

  23. 23

    在Android文本视图中显示的奇怪字符

  24. 24

    在UIAlert视图中显示推送通知文本

  25. 25

    文本视图中显示空日期时差

  26. 26

    在文本视图中显示通知 Firebase

  27. 27

    如何使用replaceAll删除部分文本

  28. 28

    如何替换TextView上的部分文本?

  29. 29

    如何从符号末尾删除部分文本?

热门标签

归档