2017-01-02 8 views
0

単純なレイアウトには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; 
} 

私はこのようなコンテンツを作成するには、このメソッドを使用します。

Small gap above ImageSpan

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> 

です。

これは誰かが説明してくれますか?

+0

のサイズを変更するには、あなたのXMLを投稿しますtoo –

答えて

0

私は

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); 
} 

に変更

public void setContent() { 

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

    txtContent.setText(content); 
} 

このメソッドは

の作品次のコード行を希望と "R.drawable.my_image" 寸法

+0

イメージをWRAP_CONTENTにサイズ変更したくありません。私はそれを特定のサイズにリサイズする必要があります – Hojjat

関連する問題