2

我有一个TextView填充文本应该包含一些ImageSpan对象。该图像可以是比正常线高度导致以下问题更高:TextView与ImageSpan混淆线高

  • 如果图像是一个行的最后一个对象,以下行的高度是正确
  • 如果最后一个对象是的图像,以下行的高度设定为含有图像行的高度

这里是正确的情况: enter image description here


这是错误的情况: enter image description here

更有趣的是,如果有一个在文本换行字符,行高为再次从这一点不错。

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坐落在一个LinearLayout这是一个ScrollView

这是我如何创建跨区文字:

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

有没有人有任何关于溶胶的想法为此吗?我宁愿不实现TextView的线条绘制方法...

+0

你有没有想过这个 – j2emanue

+0

不是reall。但是,我用多个模拟器图像测试了它,并且在我看来,只有API 23(6.0)才能生成此图像。另外,如果我在API 23手机上运行它(我认为是6.0.2),它永远不会显示这种行为。我认为开发人员在原始的API 23中搞砸了一些东西,但稍后将其修复。 –

回答

0

尝试将高度设置为要与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);