设计效果要求是这样的,看了下我一脸蒙蔽,
想了下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,能达到实现设计效果。