2017-01-02 16 views
0

У меня простая компоновка содержит только один 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() метод мой результат что-то вроде этого:

Small gap above ImageSpan

Как вы видите, между 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 рендеринга.

Может ли кто-нибудь объяснить этот аффект, пожалуйста?

+0

опубликовать XML тоже –

ответ

0

Я надеюсь, что этот метод работает

Следующая строка кода

public void setContent() { 

    SpannableStringBuilder content = new SpannableStringBuilder(); 
    content.append(getImageSpannable(R.drawable.my_image, 100, 260)); 
    content.append("\n"); 

    txtContent.setText(content); 
} 

Изменение в

public void setContent() { 

    SpannableStringBuilder content = new SpannableStringBuilder(); 
    content.append(getImageSpannable(R.drawable.my_image, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    content.append("\n"); 

    txtContent.setText(content); 
} 

И размер "R.drawable.my_image" размеры

+0

Я не хочу изменять размер изображения до WRAP_CONTENT. Я должен изменить его размер до определенного размера – Hojjat

 Смежные вопросы

  • Нет связанных вопросов^_^