我有一個簡單的佈局,只包含一個TextView
。ImageSpan使用TextView和StaticLayout進行尺寸測量
我想使用ImageSpan將圖像加載到TextView
。
以下方法創建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
而且有趣的是,當我從內容中刪除「\ n」(在setContent方法中聲明)這個空間了。
另一點是,當我試圖在第0行的端底部以測量使用StaticLayout
內容大小,用「\ n」個它返回270並且沒有「\ n」個返回260
此行爲對我造成一些困難,因爲我必須使用StaticLayout
來測量文字和ImageSpan,並決定可以放入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>
心中已經做了一些測試,我發現,字體大小是影響ImageSpan渲染。
有人可以解釋這種影響嗎?
發表您的XML –