java - 同时突出显示多个 EditText 控件中的文本

标签 java android android-edittext highlight

我遇到了以下问题:我试图通过调用 viewXYZ.setSelection(int, int) 同时突出显示多个 EditText 控件中的文本,但是选择仅在聚焦 View 中可见。

有没有办法绕过这个,在没有焦点的 EditText 中突出显示文本?也许通过重载 onDraw() 方法?

最佳答案

I know, but its (as far as I know?) the only way to mark text in an EditText control.

EditText 支持 Spannable 对象,因此您可以自己将突出显示应用于文本(例如,背景颜色)。

This sample project演示了一个搜索字段,它根据搜索结果将背景颜色应用于较大的文本。关键部分是 searchFor() 方法:

  private void searchFor(String text) {
    TextView prose=(TextView)findViewById(R.id.prose);
    Spannable raw=new SpannableString(prose.getText());
    BackgroundColorSpan[] spans=raw.getSpans(0,
                                             raw.length(),
                                             BackgroundColorSpan.class);

    for (BackgroundColorSpan span : spans) {
      raw.removeSpan(span);
    }

    int index=TextUtils.indexOf(raw, text);

    while (index >= 0) {
      raw.setSpan(new BackgroundColorSpan(0xFF8B008B), index, index
          + text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
      index=TextUtils.indexOf(raw, text, index + text.length());
    }

    prose.setText(raw);
  }

但请注意,您的“输出字符串”可能应该是 TextView,而不是 EditTextEditText 用于输入,而不是输出。

关于java - 同时突出显示多个 EditText 控件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10768808/

相关文章:

java - 从 WebView 保存图像

android - 如何创建一个加载网页的android按钮?

android - Layout Inflater 膨胀 EditText 时有趣的线程行为

android - 在 Android 中动态编辑 ListView

java - 从 EditText 获取文本字符串?

java - 在Eclipse中,调试时如何附加不同的源文件

java - 如何将指纹添加到 keystore

android - 我可以使用一个 Activity 来初始化一些对象然后完成吗?

java - 关键字 'new' 如何工作,特别是当我启动静态嵌套类时?

Java switch 语句在枚举上获得默认值