前言
最近在项目中需要在某个多行英文文本末尾增加一个图片,尝试了很多方法,最后用了一个比较Tricky的方法解决了,当然这种方法不一定是最好最优的解决办法,记录一下。
问题
如果直接使用drawableRight或者drawableEnd来将图片放置到文本末尾,结果会是这样:
图片会在TextView右边竖直方向的中间位置显示,而不是我们期望的在最后一行位置显示。
这时我们可以尝试使用ImageSpan来将图片放置在最后一行:
final TextView text = findViewById(R.id.text); final String string = "dkffkdjkfjdkfjkdjfdjfkjdkfjkdjkdjfkjdkjk"; //创建一个SpannableString对象,后面增加空格是预留给图片的 SpannableString spannableString = new SpannableString(string + " "); //创建图片的Drawable对象 Drawable drawable = getResources().getDrawable(R.mipmap.copy); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); //创建图片的ImageSpan对象 ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE); //设置ImageSpan,将其位置设置在spannableString最后面,起始位置start=spannableString.length() - 1,结束位置为end=spannableString.length(), // SPAN_INCLUSIVE_EXCLUSIVE表示包含start不包含end spannableString.setSpan(imageSpan, spannableString.length() - 1, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); text.setText(spannableString);