假设我有一个字符串
String str =" Hello, @John how's going on"
现在我想知道。,如何突出显示@John
一词,并使其可从Textview中单击
答案 0 :(得分:2)
您可以在clickable span
字符串中使用spannable
,如下所示:-
SpannableString ss = new SpannableString(" Hello, @John how's going on");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
//perform click operation
}
@Override
public void updateDrawState(TextPaint ds) {
}
};
ss.setSpan(clickableSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
yourTv.setText(ss);
yourTv.setMovementMethod(LinkMovementMethod.getInstance());
yourTv.setHighlightColor(Color.TRANSPARENT);
单击john后,将触发startIndex-是完整字符串中的单词 John 的 J 索引
endIndex-是完整字符串中单词 John 的 n 索引。
&& onclick 方法。
修改
要提取用户名John ,您可以拆分字符串并按以下代码片段进行获取:-
String username = yourString.split("@")[1].split(" ")[0]; // this will extract john
答案 1 :(得分:0)
在这里您可以设置字符串在XML文件的文本视图中,这将不是问题。 那么您可以在其中添加onclick:“ clickable”属性,它将正常工作
答案 2 :(得分:0)
这也适用于多处提及。
var str = "Hello, @John how's going on. Greedings to @Bob.";
var regex = /[@]\S[^. ]*/g;
var matches = str.match(regex)
var split = str.split(regex);
for(var i = 0; i<matches.length;i++){
document.body.appendChild(document.createTextNode(split[i]));
var a = document.createElement('a');
a.appendChild(document.createTextNode(matches[i]));
a.title = "my title text";//text you can see onHover
a.href = "http://example.com/users/"+matches[i].split('@')[1];//link to user
document.body.appendChild(a);
}
document.body.appendChild(document.createTextNode(split[split.length-1]));