gpt4 book ai didi

android - 在 TextView 中处理多个 ClickableSpan

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:32 24 4
gpt4 key购买 nike

这个问题困扰我很久了。我得到的是一个简单的字符串 "This is a link and this is another link"。我想让两个“链接”字词都可以点击,并在浏览器中打开不同的 URL。

  • 我能做的最简单的方法是在两个“链接”上设置 Click-able Span具有不同 URL 的单词,但我面临的问题是找到跨度的开始和结束位置。文本是动态的,我有以编程方式找到位置。
  • 一种方法是找到单词的第一次出现‘link’,找到起始位置和结束位置并设置跨度,然后第二次发生。但这并不可靠。文本可能包含不止一种重复的词,比如 "This is a cat link and
    这是另一个猫链接”
    。在这里我必须同时链接“猫”和“链接”通过 Click-able Span 具有不同 URL 的单词。我该怎么做?

最佳答案

这样试试

String s="Cat link 1 Cat link 2 Cat link 3";
SpannableString ss = new SpannableString(s);
String first ="Cat link 1";
String second ="Cat link 2";
String third ="Cat link 3";
int firstIndex = s.toString().indexOf(first);
int secondIndex = s.toString().indexOf(second);
ClickableSpan firstwordClick = new ClickableSpan() {
@Override
public void onClick(View widget) {
///............
}
};
ClickableSpan secondwordClick = new ClickableSpan() {
@Override
public void onClick(View widget) {
///............
}
};
ss.setSpan(firstwordClick,firstIndex, firstIndex+first.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(secondwordClick,secondIndex, secondIndex+second.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setLinksClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(ss,BufferType.SPANNABLE);

关于android - 在 TextView 中处理多个 ClickableSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28577953/

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