Как 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?

0 ответов

Другие вопросы по тегам