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);