単純なレイアウトにはTextView
という1つだけ含まれています。TextViewとStaticLayoutを使用したImageSpanサイズ測定
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メソッド内で宣言)で、行間隔ではありません。
と他の点は、私はそれが270を返すとすることなく、ライン0の端下部に「\ nを」とStaticLayout
を使用してコンテンツのサイズを、測定しようとしたときに「\ n」は、それは260
この現象を返すことです私はStaticLayout
を使ってテキストとImageSpanを測定しなければならないし、魔女1つをTextView
に収めることができるので、私にとっていくつかの困難を引き起こします。
私は誰も助けてくれてありがとう。
ありがとうございました。ここで
は私のxmlはI'vは、いくつかのテストを行って、私はフォントサイズがImageSpanのレンダリングに影響を及ぼしていることがわかり
<?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>
です。
これは誰かが説明してくれますか?
のサイズを変更するには、あなたのXMLを投稿しますtoo –