所以我一直致力于一个项目来添加在iOS上找到的功能,其中我可以分析某些关键字类型的文本字段,在这种情况下是对日期的引用,并突出显示它们以便它们可以点击并启动有意图的新活动,在这种情况下,将日历启动到上述日期。我已经完成了一个程序,它可以提取所需的单词组,并在原始字符串中提供它们的索引值,以及用于意图的相关日期的长度(以毫秒为单位)。
我遇到的问题是弄清楚如何动态地将正确的spannable字符串添加到文本字段中,这样我就可以存储与程序中每个对象关联的onClick操作。如果有一些静态数量的突出显示的对象,我可以编写有限数量的可跨越字符串来创建,但在这种情况下,程序可能会找到一个相关的日期关键字,或者它可能找到50.我不知道如何创建一个我的程序结果是每个索引范围的spannable字符串,并将点击操作与每个索引相关联。
示例:
原始字符串:"您想在下周二吃晚餐吗?"
节目发现:"下周二"开始:30结束:43时间:1445947214457
渴望重新格式化:"您想在下周二晚餐吗?" //可点击
答案 0 :(得分:1)
你只有一个SpannableString
。你会在SpannableString
中有很多跨度。
例如,以下方法来自this sample project:
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);
}
在这里,我发现给定搜索字符串的子字符串匹配,并用BackgroundColorSpan
突出显示它们。我不知道会有多少这样的比赛。我为每个人创建一个BackgroundColorSpan
。在您的情况下,您的搜索"标准将是不同的,跨度也是如此,但基本方法应该是相同的。