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

时间:2012-05-26 18:34:49

标签: java android android-edittext highlight

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

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

1 个答案:

答案 0 :(得分:4)

  

我知道,但它(据我所知?)是在EditText控件中标记文本的唯一方法。

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用于输入,而不是输出。