У меня простая компоновка содержит только один TextView
.Измерение размера изображения с помощью TextView и StaticLayout
Я хочу загрузить изображение в TextView
используя ImageSpan.
Ниже метод создает Spannable
:
private Spannable getImageSpannable(int drawableId, int targetWidth, int targetHeight) {
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), drawableId);
Bitmap bitmap = Bitmap.createScaledBitmap(originalBitmap, targetWidth, targetHeight, true);
Drawable dr = new BitmapDrawable(getResources(), bitmap);
dr.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
Spannable imageSpannable = new SpannableString("\uFFFC");
ImageSpan imgSpan = new ImageSpan(dr, DynamicDrawableSpan.ALIGN_BOTTOM);
imageSpannable.setSpan(imgSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return imageSpannable;
}
Я использую этот метод для создания контента, как это:
public void setContent() {
SpannableStringBuilder content = new SpannableStringBuilder();
content.append(getImageSpannable(R.drawable.my_image, 100, 260));
content.append("\n");
txtContent.setText(content);
}
Когда я называю setContent()
метод мой результат что-то вроде этого:
Как вы видите, между ImageSpan и небольшим зазором имеется небольшой промежуток от TextView
.
Это не межстрочный интервал, потому что я установить межстрочный интервал 0.
И интересный момент, когда я удалить «\ п» от содержания (объявленный в методе setContent) это пространство исчезло.
И еще дело в том, что, когда я попытался измерить размер контента, используя StaticLayout
, с «\ п» в конце нижней строке 0 возвращает 270 и без «\ п» возвращает 260.
Такое поведение вызывает некоторые трудности для меня, потому что я должен измерить текст и ImageSpan с помощью StaticLayout
и решить, что ведьма может поместиться в TextView
.
Я ценю, что каждый может мне помочь.
Спасибо.
Вот мой XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/txtContent"
android:layout_width="300dp"
android:layout_height="500dp"
android:background="#fed9f4"
android:textSize="22sp"/>
</LinearLayout>
I'v сделал несколько тестов, и я считаю, что размер шрифта влияет ImageSpan рендеринга.
Может ли кто-нибудь объяснить этот аффект, пожалуйста?
опубликовать XML тоже –