如何TEXTSIZE和LineSpace影响ImageSpan(How TextSize and L

2019-09-25 17:37发布

我想衡量ImageSpan与StaticLayout。 要做到这一点我用一个简单的代码象下面这样:

SpannableStringBuilder content = new SpannableStringBuilder();
Spannable imageSpannable = getImageSpannable();
content.append(imageSpannable);

StaticLayout layout = new StaticLayout(content, txt.getPaint(), txt.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1, lineSpace, false);

TXT是指示TXT线空间一个TextView和lineSpace只是一个变量。

和getImageSpannable:

private Spannable getImageSpannable() {
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.some_image);

    Drawable drawable = new BitmapDrawable(getResources(), bitmap);
    drawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());

    Spannable imageSpannable = new SpannableString("\uFFFC");
    ImageSpan imgSpan = new ImageSpan(drawable, DynamicDrawableSpan.ALIGN_BOTTOM);

    imageSpannable.setSpan(imgSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    return imageSpannable;
}

当我添加ImageSpan到SpannableStringBuilder(没有别的)似乎TEXTSIZE不上ImageSpan影响。 我的意思是,当我打电话layout.getLineBottom(0)总是返回相同的值,不管TEXTSIZE是什么。 但是,行间距影响。

但是,当我ImageSpan后加“\ n”,而另一个字符串(如“样本”),以SpannableStringBuilder,TEXTSIZE也影响到ImageSpan高度。 在这种情况下有ImageSpan上边距等于:(lineSpace + TEXTSIZE / 2)。

有人可以解释ImageSpan的确切行为,因为我有单独和CONCAT测量ImageSpan导致。

我应该如何衡量ImageSpan所以ImageSpan的身高不合并到其他字符串甚至其他ImageSpans后更改?

文章来源: How TextSize and LineSpace affects ImageSpan