Как TextSize и LineSpace влияют на ImageSpan
Я хочу измерить 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 - это TextView, а lineSpace - просто переменная, указывающая пространство строки TXT.
И 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. Но пробел влияет.
Но когда я добавляю "\n" и другую строку (например, "образец") после ImageSpan в SpannableStringBuilder, TextSize также влияет на высоту ImageSpan. В этой ситуации ImageSpan имеет верхнее поле, равное: (lineSpace + TextSize/2).
Может кто-нибудь объяснить точное поведение ImageSpan, потому что я должен измерить ImageSpan индивидуально и согласен с результатом.
Как мне измерить ImageSpan, чтобы высота ImageSpan не менялась после объединения с другими строками или даже другими ImageSpans?