我遇到了以下问题:我试图通过调用viewXYZ.setSelection(int, int)
来同时突出显示多个EditText
控件中的文本,但该选择仅在焦点视图中可见。同时在多个EditText控件中突出显示文本
有什么办法可以绕过这个,突出显示未聚焦的文字EditText
?也许通过重载onDraw()
方法?
我遇到了以下问题:我试图通过调用viewXYZ.setSelection(int, int)
来同时突出显示多个EditText
控件中的文本,但该选择仅在焦点视图中可见。同时在多个EditText控件中突出显示文本
有什么办法可以绕过这个,突出显示未聚焦的文字EditText
?也许通过重载onDraw()
方法?
我知道,但它(只要我知道?)唯一的方法来标记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
,不是EditText
。 EditText
用于输入,不输出。
这正是我所期待的,谢谢! :) –
谢谢@CommonsWare! – HeavyE
'setSelection()'不是“突出显示文本”,而是设置剪切/复制/粘贴操作的选择。因此,它只有在具有焦点的“EditText”上才有意义。在多个'EditText'小部件中突出显示文本的目的是什么? – CommonsWare
我知道,但它(据我所知?)唯一的方式来标记EditText控件中的文本。我只想实时地转换某些输入字符串,并且如果您单击输入字符串的一个部分,我想突出显示输出字符串的相应部分。 –