【问题标题】:Drawable Image does not scale as per screen density可绘制图像不按屏幕密度缩放
【发布时间】:2018-01-02 09:25:50
【问题描述】:

我有一个 ImageView,它是 ListItemView 的一部分,应该显示在 ListView 中。如果没有 Image,listview 的每个项目都会占用更少的高度。这在所有屏幕上都是一致的,因为它们都具有相同的高度。但是,在其中一个活动中,我需要在列表视图项目中显示图像,这总是会增加该活动的每个项目的大小。我在 res > drawable > family > family (hdpi), family (mdpi), family (xhdpi), family (xxhdpi), fmaily (xxxhdpi) 下有正确的文件夹结构

所以每张图片根据屏幕密度有5个版本。

我的布局文件中有以下内容:

<ImageView
        android:id="@+id/image"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="right|center"/>

我正在用 Java 代码设置图像:

ImageView imageView = listItemView.findViewById(R.id.image);
imageView.setImageResource(word.getImage());

但是,无论我选择什么分辨率,图像大小似乎总是一样的,它会影响 ListView 中整个 ListItemView 的大小。

没有图片的 ListView 项的大小:

使用 ImageView:

您可能已经注意到灰色背景的 ListView 项的高度发生了变化。这正常吗。我不想修复图像的大小。我想根据屏幕分辨率缩放它,但是,它不应该扭曲 ListView 项目的整体高度。无论屏幕密度如何,此图像都保持不变。为什么它不会自动缩放并适合 ListView 项。

这是正常现象还是有什么解决方法?

【问题讨论】:

    标签: android imageview drawable


    【解决方案1】:

    您允许图像通过设置android:layout_height="wrap_content" 来决定它可以使用多少空间,然后相应地调整宽度(以便您的layout_weight 正常工作)。

    您可以更改布局以将ImageView 强制设置为您喜欢的高度,并让scaleType 获得首选缩放比例。在这个例子中,我使用了fitCenter,但还有其他可以选择的(例如fitXY)。

    通过使用尺寸限定符dp,图像将自动“缩放”屏幕密度,因为dp 是与密度无关的像素,这意味着它会随着屏幕密度而变化。

    <ImageView
            android:id="@+id/image"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:scaleType="fitCenter"
            android:layout_weight="1"
            android:layout_gravity="right|center"/>
    

    【讨论】:

      猜你喜欢
      • 2014-10-25
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多