我遇到了以下问题:我试图通过调用 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
,而不是 EditText
。 EditText
用于输入,而不是输出。
关于java - 同时突出显示多个 EditText 控件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10768808/