美文网首页week.io
Android中Html.fromHtml()应该注意的地方

Android中Html.fromHtml()应该注意的地方

作者: lijinxiang | 来源:发表于2015-11-19 14:42 被阅读5393次

Html.fromHtml()方法确实是一个非常好用的方法,它可以解析html标签,来展示图文混合的丰富的界面.昨天遇到了一个bug就是关于fromHtml()的.

在解析html中<a>标签的时候,部分标签内的链接类似href='/member/abc'这样的形式,是一个相对的路径,Android找不到能够处理这种没有http://超链接的app,整个程序就崩溃了.解决办法就是在这解析到这种<a>标签的时候移除该URLSpan,再添加一个ClickableSpan.

        /**
         * 点击@后面的人名崩溃的问题,并且点击@用户名跳转到用户详情页
         * http://androblip.huiges.nl/2010/11/28/handling-html-in-a-textview/
         */
        URLSpan[] urlSpans = htmlSpannable.getSpans(0,htmlSpannable.length(),URLSpan.class);
        for (URLSpan span : urlSpans){
            int start = htmlSpannable.getSpanStart(span);
            int end = htmlSpannable.getSpanEnd(span);
            int flag = htmlSpannable.getSpanFlags(span);
            if (!span.getURL().startsWith("http")&&span.getURL().contains("/member/")){
                ClickableSpan clickableSpan = new ClickableSpan() {
                    @Override
                    public void onClick(View widget) {
                        Toast.makeText(getContext(),"@",Toast.LENGTH_SHORT).show();
                    }
                };
                htmlSpannable.removeSpan(span);
                htmlSpannable.setSpan(clickableSpan,start,end,flag);
            }
        }

相关文章

网友评论

    本文标题:Android中Html.fromHtml()应该注意的地方

    本文链接:https://www.haomeiwen.com/subject/vmslhttx.html