SpannableString SpannableImage实现

作者: LeoYe168 | 来源:发表于2017-07-10 10:57 被阅读113次

设计效果要求是这样的,看了下我一脸蒙蔽,


粘贴图片.png

想了下drawableleft实现不了,然后告诉设计妹子这个我们实现不了,可执著的妹子问我为什么实现不了,m站跟ios都能实现。于是我继续默默去找实现方案了。

我是知道SpannableString来实现一些特殊文本显示的,比如下划线 加黑 粗体 等特殊形式,但这些都仅仅局限于纯文本显示。而对于ImageSpan确实是不够了解,也是在项目代码中有类似得到启发

        SpannableStringBuilder builder = new SpannableStringBuilder("ezb uy " + name);
        if (CountryInfo.getCountryFlagByOrigin(originCountry) != 0) {
            if (isPrime) {
                //即使prime又有国家icon
                builder.setSpan(new ImageSpan(App.getInstance(), R.drawable.ic_black_prime_tag, ImageSpan.ALIGN_BASELINE), 0, 3, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
                builder.setSpan(new ImageSpan(App.getInstance(), CountryInfo.getCountryFlagByOrigin(originCountry), ImageSpan.ALIGN_BASELINE), 4, 6, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
            } else {
                builder.setSpan(new ImageSpan(App.getInstance(), CountryInfo.getCountryFlagByOrigin(originCountry), ImageSpan.ALIGN_BASELINE), 0, 6, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
            }
        } else {
            if (isPrime) {
                builder.setSpan(new ImageSpan(App.getInstance(), R.drawable.ic_black_prime_tag, ImageSpan.ALIGN_BASELINE), 0, 6, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
            } else {
                builder.replace(0, 7, "");
            }
        }

代码是动态实现替换两个或者一个icon,能达到实现设计效果。

相关文章

网友评论

    本文标题:SpannableString SpannableImage实现

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