可以使用两种方式实现设置图片
1.通过这种方式不用每次设置drawable的大小 ,图片位置有一定限制,只能在文本的上下左右。不能插入到文本中去,且图片只能上下或者左右居中显示。
Drawable drawableLeft = ContextCompat.getDrawable( mContext, R.mipmap.ic_match_smile)
contentTv.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,
null, null, null);
2.在文本指定位置添加一张本地图片并设置前面的文字为指定颜色实现图文混排,图片位置可以随意设置,更灵活
val money = "500"
val string = mContext.getString(R.string.coins_from_this_call, it, money)
val spannableString = SpannableString(string)
val image = ImageSpan(mContext, R.mipmap.ic_coin_small, DynamicDrawableSpan.ALIGN_BOTTOM)
val index = spannableString.indexOf(money)
//动态设置图片
spannableString.setSpan(image, index +
money.length, index
+ money.length + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
//动态设置字体颜色
spannableString.setSpan(ForegroundColorSpan(ContextCompat.getColor(mContext, R.color.common_color_FFC300)), index, index + money.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
tvContent.text = spannableString
val text =“2.99/.99”;
//设置字体大小
textSpan.setSpan(AbsoluteSizeSpan(DensityUtil.dip2px(context, 16f)), 0, text.indexOf("/"), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
textSpan.setSpan(StyleSpan(Typeface.BOLD), 0, text.indexOf("/"), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置删除线
textSpan.setSpan(StrikethroughSpan(), text.indexOf("/"), text.length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
//设置字体大小
textSpan.setSpan(AbsoluteSizeSpan(DensityUtil.dip2px(context, 12f)), text.indexOf("/"), text.length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
tv_action?.text = textSpan