Android 带有ImageSpan的TextView会弄乱线条高度

Android 带有ImageSpan的TextView会弄乱线条高度,android,textview,spannablestring,imagespan,Android,Textview,Spannablestring,Imagespan,我有一个TextView,里面充满了应该包含一些ImageSpan对象的文本。图像可能高于导致以下问题的正常直线高度: 如果图像是线条的最后一个对象,则以下线条的高度是正确的 如果最后一个对象不是图像,则以下线条高度将设置为包含线条高度的图像 以下是正确的情况: 这是错误的情况: 更有趣的是,如果文本中有一个新的行字符,那么从那一点开始,行的高度也是很好的 TextView只是一个非常基本的视图: <TextView android:id="@+id/text_02"

我有一个
TextView
,里面充满了应该包含一些
ImageSpan
对象的文本。图像可能高于导致以下问题的正常直线高度:

  • 如果图像是线条的最后一个对象,则以下线条的高度是正确的
  • 如果最后一个对象不是图像,则以下线条高度将设置为包含线条高度的图像
以下是正确的情况:


这是错误的情况:

更有趣的是,如果文本中有一个新的行字符,那么从那一点开始,行的高度也是很好的

TextView
只是一个非常基本的视图:

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

有人知道这个问题的解决方案吗?我不想重新实现
TextView
的线条绘制方法…

尝试设置要使用
图像span
显示的可绘制图形的高度。例如:

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);
Drawable vegetary=mContext.getResources().getDrawable(R.Drawable.ic\u best\u veget);
setBounds(0,0,vegetary.getIntrinsicWidth(),);
ssb.setSpan(新ImageSpan(vegetary,ImageSpan.ALIGN_UBaseline),ssb.length()-1,ssb.length(),Spannable.SPAN_uExclusive\u EXCLUSIVE);

你有没有想过这不是真的。然而,我确实用多个模拟器映像对其进行了测试,在我看来,只有API23(6.0)映像产生了这种效果。而且,如果我在API23手机上运行它(我想是6.0.2),它永远不会显示这种行为。我认为开发人员在最初的API23中弄乱了一些东西,但后来修复了它。@GergelyKőrössy您现在找到解决方案了吗?API 23是否有解决办法?
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);