2

我正在渲染一些带有图像标签的 HTML TextView。我尝试在getDrawable()代码中缩放图像,但没有成功。代码看起来像这样。

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 回答