gpt4 book ai didi

Android,向 TextView 添加不同数量的可点击跨度

转载 作者:行者123 更新时间:2023-11-30 01:49:53 25 4
gpt4 key购买 nike

所以我一直在做一个项目来添加一个在 iOS 上找到的功能,我可以在其中分析文本字段的某些关键字类型,在这种情况下是指日期,并突出显示它们以便它们可以点击并启动一个有 Intent 的新 Activity ,在这种情况下,将日历启动到提到的日期。我已经完成了一个程序,它可以提取所需的词组并在原始字符串中提供它们的索引值,并以毫秒为单位提供一长串相关日期以用于 Intent 。

我遇到的问题是弄清楚如何将正确的 spannable 字符串动态添加到文本字段,以便我有一个地方来存储与程序中每个对象关联的 onClick 操作。如果有静态数量的突出显示对象,我可以编写有限数量的可跨越字符串来创建,但在这种情况下,程序可能会找到一个相关的日期关键字,或者它可能会找到 50 个。我不知道如何创建可跨越字符串对于每个索引范围,我的程序都会生成并将点击操作与每个索引相关联。

例子:

原文:“你想下周二一起吃晚饭吗?”

程序查找:“下周二” 开始:30 结束:43 时间:1445947214457

需要重新格式化:“你想下周二吃晚饭吗?”//可点击

最佳答案

您将只有一个 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。在您的情况下,您的“搜索”标准会有所不同,跨度也会有所不同,但基本方法应该相同。

关于Android,向 TextView 添加不同数量的可点击跨度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33224985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com