TextView - 如何显示简单的URL和超链接

时间:2018-05-20 21:53:55

标签: android hyperlink textview fromhtml

两个输入字符串,例如:

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将忽略超链接。

问题是我应该用什么来支持这两者:超链接和简单网址?

1 个答案:

答案 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);