<i id='lqskK'><tr id='lqskK'><dt id='lqskK'><q id='lqskK'><span id='lqskK'><b id='lqskK'><form id='lqskK'><ins id='lqskK'></ins><ul id='lqskK'></ul><sub id='lqskK'></sub></form><legend id='lqskK'></legend><bdo id='lqskK'><pre id='lqskK'><center id='lqskK'></center></pre></bdo></b><th id='lqskK'></th></span></q></dt></tr></i><div id='lqskK'><tfoot id='lqskK'></tfoot><dl id='lqskK'><fieldset id='lqskK'></fieldset></dl></div>
    <tfoot id='lqskK'></tfoot>
      <bdo id='lqskK'></bdo><ul id='lqskK'></ul>
    <legend id='lqskK'><style id='lqskK'><dir id='lqskK'><q id='lqskK'></q></dir></style></legend>

    1. <small id='lqskK'></small><noframes id='lqskK'>

    2. 如何在 EditText 中突出显示多个单词?

      How to highlight Multiple words in EditText?(如何在 EditText 中突出显示多个单词?)

        <bdo id='XKTsS'></bdo><ul id='XKTsS'></ul>
        1. <small id='XKTsS'></small><noframes id='XKTsS'>

            <i id='XKTsS'><tr id='XKTsS'><dt id='XKTsS'><q id='XKTsS'><span id='XKTsS'><b id='XKTsS'><form id='XKTsS'><ins id='XKTsS'></ins><ul id='XKTsS'></ul><sub id='XKTsS'></sub></form><legend id='XKTsS'></legend><bdo id='XKTsS'><pre id='XKTsS'><center id='XKTsS'></center></pre></bdo></b><th id='XKTsS'></th></span></q></dt></tr></i><div id='XKTsS'><tfoot id='XKTsS'></tfoot><dl id='XKTsS'><fieldset id='XKTsS'></fieldset></dl></div>

                  <tbody id='XKTsS'></tbody>
              • <tfoot id='XKTsS'></tfoot><legend id='XKTsS'><style id='XKTsS'><dir id='XKTsS'><q id='XKTsS'></q></dir></style></legend>

                本文介绍了如何在 EditText 中突出显示多个单词?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                目前我正在开发 Spelling &语法检查应用程序.它有 EditText 用户可以在其中输入文本和单击按钮应用程序时,一个名为检查文本"的按钮将调用 LanguageTool API 来检查文本和返回带有结果的 JSON 响应.

                Currently I'm developing Spelling & Grammar checking app. It has EditText where user can input text & one button called "Check Text " upon click on button app will call LanguageTool API to check text & returns JSON response with result .

                这是应用程序的屏幕截图:

                Here is screenshot of app :

                这是我迄今为止尝试突出显示多个单词的代码,但此代码仅突出显示我创建的数组中的最后一个单词:

                Here is code which I have tried so far for highlighting multiple words but this code only highlights last word from array which I have created:

                for (int i = 0; i < errorStrings.size(); i++) {
                
                // Here textToCheck is EditText & errorStrings is ArrayList of type WrongString class which i have created to hold Error string , offset & length.
                
                Spannable wordtoSpan = new SpannableString(texttoSend);
                wordtoSpan.setSpan(new BackgroundColorSpan(Color.BLUE),errorStrings.get(i).getOffset(),
                                                        (errorStrings.get(i).getOffset()+errorStrings.get(i).getLength()), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                                            textToCheck.setText(wordtoSpan);
                }
                

                推荐答案

                我写了一个简单的方法,可以让你传递TextView(或子类ButtonEdittext 等).

                I have wrote a simple method that allow you pass TextView (or child classes Button, Edittext etc.).

                1.如果您想突出显示段落中查找单词中的文本.您可以使用以下方法.

                setHighLightedText(yourTextView_Edittext_Button, "a");
                

                这会给你这样的结果.

                    /**
                     * use this method to highlight a text in TextView
                     * @param tv TextView or Edittext or Button or child of TextView class
                     * @param textToHighlight Text to highlight
                     */
                    public void setHighLightedText(TextView tv, String textToHighlight) {
                        String tvt = tv.getText().toString();
                        int ofe = tvt.indexOf(textToHighlight, 0);
                        Spannable wordToSpan = new SpannableString(tv.getText());
                        for (int ofs = 0; ofs < tvt.length() && ofe != -1; ofs = ofe + 1) {
                            ofe = tvt.indexOf(textToHighlight, ofs);
                            if (ofe == -1)
                                break;
                            else {
                                wordToSpan.setSpan(new BackgroundColorSpan(0xFFFFFF00), ofe, ofe + textToHighlight.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                                tv.setText(wordToSpan, TextView.BufferType.SPANNABLE);
                            }
                        }
                    }
                

                <强>2.如果您想制作可点击的突出显示文本(例如单击条款和条件文本),请使用以下代码:

                 setClickableHighLightedText(yourTextView_Edittext_Button, "go to settings", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            // TODO: do your stuff here 
                        }
                    });
                

                这会给你这样的结果

                /**
                 * use this method to set clickable highlighted a text in TextView
                 *
                 * @param tv              TextView or Edittext or Button or child of TextView class
                 * @param textToHighlight Text to highlight
                 */
                public void setClickableHighLightedText(TextView tv, String textToHighlight, View.OnClickListener onClickListener) {
                    String tvt = tv.getText().toString();
                    int ofe = tvt.indexOf(textToHighlight, 0);
                    ClickableSpan clickableSpan = new ClickableSpan() {
                        @Override
                        public void onClick(View textView) {
                            if (onClickListener != null) onClickListener.onClick(textView);
                        }
                
                        @Override
                        public void updateDrawState(TextPaint ds) {
                            super.updateDrawState(ds);
                            ds.setColor(0xff0000ff);
                            ds.setUnderlineText(true);
                        }
                    };
                    SpannableString wordToSpan = new SpannableString(tv.getText());
                    for (int ofs = 0; ofs < tvt.length() && ofe != -1; ofs = ofe + 1) {
                        ofe = tvt.indexOf(textToHighlight, ofs);
                        if (ofe == -1)
                            break;
                        else {
                            wordToSpan.setSpan(clickableSpan, ofe, ofe + textToHighlight.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                            tv.setText(wordToSpan, TextView.BufferType.SPANNABLE);
                            tv.setMovementMethod(LinkMovementMethod.getInstance());
                        }
                    }
                }
                

                这是一种解决方法,您可以根据需要自定义跨度.一些很好的教程 Android 文本样式 和 另一个

                This is a workaround, you can customise spans according to your need. Some good tutorials Android text styles and one other

                这篇关于如何在 EditText 中突出显示多个单词?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)
                How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)
                Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)
                Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)
                How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)
                How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)
              • <legend id='bNwOX'><style id='bNwOX'><dir id='bNwOX'><q id='bNwOX'></q></dir></style></legend>

                  • <small id='bNwOX'></small><noframes id='bNwOX'>

                    <i id='bNwOX'><tr id='bNwOX'><dt id='bNwOX'><q id='bNwOX'><span id='bNwOX'><b id='bNwOX'><form id='bNwOX'><ins id='bNwOX'></ins><ul id='bNwOX'></ul><sub id='bNwOX'></sub></form><legend id='bNwOX'></legend><bdo id='bNwOX'><pre id='bNwOX'><center id='bNwOX'></center></pre></bdo></b><th id='bNwOX'></th></span></q></dt></tr></i><div id='bNwOX'><tfoot id='bNwOX'></tfoot><dl id='bNwOX'><fieldset id='bNwOX'></fieldset></dl></div>

                    <tfoot id='bNwOX'></tfoot>
                        <tbody id='bNwOX'></tbody>
                        • <bdo id='bNwOX'></bdo><ul id='bNwOX'></ul>