2

内に画像タグを含むHTMLをレンダリングしていますTextViewgetDrawable()コード内の画像を拡大縮小しようとしましたが失敗しました。コードは次のようになります。

myTextView.setText(Html.fromHtml(htmlSource, this, this));
@Override public Drawable getDrawable(String url) {
  Drawable.createFromStream((InputStream) new URL(url).getContent(), null);
}

大きな画像は、画面の幅に合わせて縮小されません。代わりに、画像の左端の部分だけが表示され、画像の残りの部分は画面から切り取られます。画面に収まるように画像を縮小するにはどうすればよいですか?

私のレイアウトは次のようになります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myId"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:fillViewport="true" >

        <TextView
            android:id="@+id/myTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:textSize="22dp" />
    </ScrollView>
</LinearLayout>
4

1 に答える 1

3

これは私がそれをした方法です:

@Override public Drawable getDrawable(String url) {
  Drawable drawable = 
     Drawable.createFromStream((InputStream) new URL(url).getContent(), null);
  final float scalingFactor = 
     (float)textView.getMeasuredWidth() / d.getIntrinsicWidth();
  d.setBounds(0, 0, textView.getMeasuredWidth(), 
     (int) (d.getIntrinsicHeight()*scalingFactor));
}

ただし、TextViewがまだレンダリングされておらず、getIntrinsicWidthが0を返すために、この手法が失敗することがあることを発見しました。まだ解決策はありませんが、このコードを使用している場合は、ログを記録して確認する必要があります。 。ゼロ除算の例外が表示される場合があります...

于 2012-04-07T19:12:14.560 に答える