我想衡量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后更改?