Уменьшить высоту и ширину ImageSpan

Я устанавливаю Image Drawable как SpannableString для TextView, но изображение выходит больше, чем текст, что делает его странным. Мне нужно уменьшить размер изображения, чтобы оно было той же высоты, что и текст:

Вот что я пробовал:

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

SpannableStringBuilder builder = new SpannableStringBuilder(holder.temptext.getText());
builder.setSpan(new ImageSpan(drawable), selectionCursor - ":)".length(), selectionCursor, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.temptext.setText(builder);
holder.temptext.setSelection(selectionCursor);

holder.caption.setText(builder);

person Dinuka Jay    schedule 30.08.2015    source источник


Ответы (1)


Вам нужно измерить высоту TextView и использовать ее вместо внутренних границ:

int lineHeight = holder.temptext.getLineHeight();

drawable.setBounds(0, 0, lineHeight, lineHeight);
person Nikolai    schedule 07.09.2015
comment
это не поддерживает соотношение сторон изображения - person vlatkozelka; 16.10.2019
comment
Вы можете рассчитать новую ширину следующим образом val width = lineHeight * drawable.intrinsicWidth / drawable.intrinsicHeight. - person carvaq; 01.12.2020