java - android EditText高亮文本中的多个单词

标签 java android android-edittext

我在 EditText 的文本中搜索了一些词。经过一些逻辑,我得到了这些词的索引。索引存储在 arrayList> 中。

然后我就用这个函数来高亮这些文字的颜色。

    public void changeColor(EditText et, ArrayList<ArrayList<Integer>> arr) {
    Spannable wordtoSpan = new SpannableString(et.getText());
    if (arr==null) return;
    for (int i=0; i<arr.size(); i++){
        wordtoSpan.setSpan(new BackgroundColorSpan(Color.BLUE), arr.get(i).get(0),
                arr.get(i).get(1), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        et.setText(wordtoSpan, TextView.BufferType.SPANNABLE);
        System.out.println("i'm changing color now");
    }
}

然而,即使循环执行了单词数的倍数,也只有第一个单词被高亮显示。 我试图用 TextView 替换 EditText,但仍然只有一个单词突出显示。 有人可以帮忙看看这里出了什么问题吗?谢谢。

最佳答案

这似乎是正确的,但最好将您的代码替换为

public void changeColor(EditText et, ArrayList<ArrayList<Integer>> arr) {
    Spannable wordtoSpan = new SpannableString(et.getText());
    if (arr==null) return;
    for (int i=0; i<arr.size(); i++){
        wordtoSpan.setSpan(new BackgroundColorSpan(Color.BLUE), arr.get(i).get(0),
            arr.get(i).get(1), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        System.out.println("i'm changing color now");
    }
    et.setText(wordtoSpan);
}

如果在这个改变之后,你的问题仍然存在,我认为它可能与你在“arr”中的字符串索引有关

关于java - android EditText高亮文本中的多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22890075/

相关文章:

java - 仅包含一个方法定义的接口(interface)名称

java - 用更新版本替换 Assets 中的旧数据库

android - 如何从 fragment 中将微调器置于操作栏的中心

android - 如何在 Android 中使用 TextWatcher 类?

android - 尝试在空对象引用上调用虚拟方法 尝试在空对象引用上调用虚拟方法 android.widget.EditText.getText()

java - 如何确定一个类是否扩展了 Java 中的另一个类?

java - 进度条未在 fragment 中显示

android - 使 Activity singleTask在返回后破坏堆栈?

android - 如何从 RecyclerView 共享图像?

java - 在 Android 上创建自己的键盘