我有一个TextView填充的文本应该包含一些ImageSpan对象。图像可能高于正常的线条高度,这会导致以下问题:
如果图像是一行的最后一个对象,则下列行的高度是正确的
如果最后一个对象不是图像,则将以下行的高度设置为包含行高度的图像
下面是正确的情况:
android - 使用ImageSpan的TextView会破坏行高-LMLPHP
这是错误的情况:
android - 使用ImageSpan的TextView会破坏行高-LMLPHP
更有趣的是,如果文本中有一个新的行字符,那么从这一点开始,行的高度是好的。
TextView只是一个非常基本的:

<TextView
    android:id="@+id/text_02"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="18dp"
    android:text="Text 02" />

(位于aTextView中的aLinearLayout中)
这就是我创建跨距文本的方式:
TextView textView02 = (TextView) findViewById(R.id.text_02);

SpannableString string = new SpannableString(LOREM_IPSUM);
string.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 102, 103, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
string.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 105, 106, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
string.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), 108, 109, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

textView02.setText(string);

有人知道解决这个问题的办法吗?我不想重新实现ScrollView的画线方法…

最佳答案

尝试为要用ImageSpan显示的绘图文件设置高度。例如:

Drawable vegetary = mContext.getResources().getDrawable(R.drawable.ic_best_veget);
    vegetary.setBounds(0, 0, vegetary.getIntrinsicWidth(), <yourHeight>);
    ssb.setSpan(new ImageSpan(vegetary, ImageSpan.ALIGN_BASELINE), ssb.length()-1, ssb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

10-04 10:06