两个输入字符串,例如:
1。超链接输入:
"<a href=\"https://blog.twitter.com/official/en_us/topics/company/2018/keeping-your-account-secure.html\">Что случилось с паролями в логах Twitter</a>"
2。简单网址:
https://www.youtube.com/watch?v=2Cj6CbC-DkU
TextView类有两种方法可以突出显示链接并使其可点击:
1。通过代码:
TextView.setMovementMethod(LinkMovementMethod.getInstance());
2。通过XML:
android:autoLink="web"
处理超链接的已知问题我们应该使用LinkMovementMethod的第一个方法,并删除xml属性“autoLink”。
关键是当我使用这个解决方案时,我的textView忽略了简单链接(示例中的第二个输入字符串)。 反之亦然 - 如果我使用XML解决方案,textView将忽略超链接。
问题是我应该用什么来支持这两者:超链接和简单网址?
答案 0 :(得分:0)
假设您想要使用Twitter
替换单词SpannableStringBuilder
,例如:
SpannableStringBuilder spanTxt = new SpannableStringBuilder(
"Что случилось с паролями в логах ");
spanTxt.append("Twitter");
spanTxt.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(ContextCompat.getColor(context, R.color.pick_button_color)); //Your color for hyperlinked word
ds.setUnderlineText(false);
}
@Override
public void onClick(View widget) {
// Handle click on Twitter
}
}, spanTxt.length() - "Twitter".length(), spanTxt.length(), 0);
spanTxt.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.pick_button_color)), 33, spanTxt.length(), 0); // I put 33 check did I count correctly
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(spanTxt, TextView.BufferType.SPANNABLE);