android搜索突出显示返回先前搜索过的单词与当前搜索的单词

时间:2016-02-02 08:19:23

标签: android

我有代码来搜索TextView并使用突出显示返回搜索到的字词。问题在于它也保持先前搜索的单词突出显示,而不是重新开始突出显示。以下是我的代码:

            String ett = et.getText().toString();
            String tvt = tvdisplay.getText().toString();
            int ofe = tvt.indexOf(ett,0);

          Spannable WordtoSpan = new                 SpannableString(tvdisplay.getText());
             for (int ofs=0; ofs<tvt.length() && ofe != -1; ofs=ofe+1)
             {

                 ofe = tvt.indexOf(ett, ofs);
                 if (ofe == -1)
                     break;
                 else
                 {

                     WordtoSpan.setSpan(new BackgroundColorSpan(0xFFFFFF00),ofe,ofe+ett.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                     tvdisplay.setText(WordtoSpan, TextView.BufferType.SPANNABLE);
                 }
             }

        }
    });

    }

模拟器中搜索到的单词的图像: enter image description here

1 个答案:

答案 0 :(得分:0)

而不是使用new SpannableString(tvdisplay.getText()) new SpannableString(tvt)

您要做的是从文本 String 创建新的Spannable,而不是从 CharSequence 创建。但问题是tvdisplay.getText()会返回CharSequence - 在这种情况下,它会返回您之前设置的SpannableString

如果性能是您应用的关键点,您可以考虑使用removeSpan()删除旧版本,而不是每次都创建一个新的SpannableString对象。有关字符串,CharSequences等的更多信息,请查看https://stackoverflow.com/a/17547344/1096567