gpt4 book ai didi

java - 使用 SpannableStringBuilder 在 Android 中使特定单词可点击

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:11 27 4
gpt4 key购买 nike

我想让给定字符串中的一些单词可点击,例如“我必须见到@vikash和@walker以及@jay。(onClick我将打开一个拨号器窗口。)在这里,我想让所有以“@”开头的单词都可点击。使用此功能时,只有一个单词可以点击。

private SpannableStringBuilder addClickablePart(String str) {
SpannableStringBuilder ssb = new SpannableStringBuilder(str);

int idx1 = desc.indexOf("@");
int idx2 = 0;
while (idx1 != -1) {
idx2 = str.indexOf(" ", idx1) + 1;

final String clickString = str.substring(idx1, idx2);
ssb.setSpan(new ClickableSpan() {

@Override
public void onClick(View widget) {
Toast.makeText(ViewNote.this, clickString,
Toast.LENGTH_SHORT).show();
}
}, idx1, idx2, 0);
idx1 = str.indexOf("[", idx2);
}

return ssb;

}

最佳答案

正如 @Veaceslav Gaidarji 所说,对于 @ 词,请尝试使用 regex .

尝试这段代码:

private SpannableString addClickablePart(String str) {
SpannableString ss = new SpannableString(str);
Pattern pattern = Pattern.compile("[@]\\w*");
Pattern matcher = pattern.matcher(str);

while (matcher.find()) {
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
// do toasting
}
};
ss.setSpan(clickableSpan, matcher.start, matcher.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return ss;
}

--- 已编辑 ---

此代码将使用正则表达式模式([@]\w*)搜索所有@character,然后向它们添加可点击的范围。我们使用 SpannableString 而不是 SpannableStringBuilder,因为我们不需要在这里构建 spannableString。

关于java - 使用 SpannableStringBuilder 在 Android 中使特定单词可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29487021/

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