为了账号安全,请及时绑定邮箱和手机立即绑定

从TextView中的链接中删除下划线-Android

从TextView中的链接中删除下划线-Android

摇曳的蔷薇 2019-10-26 11:18:40
我正在使用两个textview来显示数据库中的链接,我设法更改了链接颜色,但是我想删除下划线email.setText(c.getString(5));    website.setText(c.getString(6));    Linkify.addLinks(email, Linkify.ALL);    Linkify.addLinks(website, Linkify.ALL);我可以从XML或代码中做到这一点吗?
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

您可以通过查找URLSpan实例并将实例替换为不带下划线的版本,从而在代码中做到这一点。调用后Linkify.addLinks(),stripUnderlines()在每个上调用下面粘贴的函数TextView:


    private void stripUnderlines(TextView textView) {

        Spannable s = new SpannableString(textView.getText());

        URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);

        for (URLSpan span: spans) {

            int start = s.getSpanStart(span);

            int end = s.getSpanEnd(span);

            s.removeSpan(span);

            span = new URLSpanNoUnderline(span.getURL());

            s.setSpan(span, start, end, 0);

        }

        textView.setText(s);

    }

这需要URLSpan的自定义版本,该版本不启用TextPaint的“下划线”属性:


    private class URLSpanNoUnderline extends URLSpan {

        public URLSpanNoUnderline(String url) {

            super(url);

        }

        @Override public void updateDrawState(TextPaint ds) {

            super.updateDrawState(ds);

            ds.setUnderlineText(false);

        }

    }


查看完整回答
反对 回复 2019-10-26
?
慕斯王

TA贡献1864条经验 获得超2个赞

UnderlineSpan 已经存在,但只能设置下划线。


另一种解决方案是在每个现有上不加下划线URLSpan。因此,下划线状态在绘画之前就被禁用了。这样,您可以将您的URLSpan(可能是自定义的)类和所有其他样式保留在其他位置。


public class NoUnderlineSpan extends UnderlineSpan {

    public NoUnderlineSpan() {}


    public NoUnderlineSpan(Parcel src) {}


    @Override

    public void updateDrawState(TextPaint ds) {

        ds.setUnderlineText(false);

    }

}

这是在不删除现有URLSpan对象的情况下进行设置的方法:


URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);

for (URLSpan span: spans) {

    int start = s.getSpanStart(span);

    int end = s.getSpanEnd(span);

    NoUnderlineSpan noUnderline = new NoUnderlineSpan();

    s.setSpan(noUnderline, start, end, 0);

}


查看完整回答
反对 回复 2019-10-26
  • 3 回答
  • 0 关注
  • 856 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信