Android 文本大小和线条空间如何影响ImageSpan
我想用StaticLayout测量ImageSpan。为此,我使用以下简单代码:Android 文本大小和线条空间如何影响ImageSpan,android,imagespan,staticlayout,Android,Imagespan,Staticlayout,我想用StaticLayout测量ImageSpan。为此,我使用以下简单代码: SpannableStringBuilder content = new SpannableStringBuilder(); Spannable imageSpannable = getImageSpannable(); content.append(imageSpannable); StaticLayout layout = new StaticLayout(content, txt.getPaint(), t
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是一个文本视图,lineSpace只是一个指示txt行空间的变量
和GetImageSpanable:
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”和另一个字符串(如“sample”)到SpannableStringBuilder时,TextSize也会影响ImageSpan的高度。在这种情况下,ImageSpan的上边距等于:(lineSpace+TextSize/2)
有人能解释ImageSpan的确切行为吗,因为我必须单独测量ImageSpan并计算结果
我应该如何测量ImageSpan,以便ImageSpan的高度在与其他字符串或甚至其他ImageSpans组合后不会改变