将ScaleType.MATRIX设置为Custom ImageView可以缩小图像的初始显示

问题描述

我将要创建自己的自定义ImageView,因此我在下面创建此类。

class MyImageView @JvmOverloads constructor(
    context: Context,attrs: AttributeSet? = null,defStyleAttr: Int = 0
) : AppCompatimageView(context,attrs,defStyleAttr) {
}

认情况下(即不使用setScaleType(ScaleType.MATRIX)),它看起来在下面(非常适合屏幕)。

enter image description here

因此,如果我在setScaleType(ScaleType.MATRIX)添加init,它将变成如下所示。

class MyImageView @JvmOverloads constructor(
    context: Context,defStyleAttr) {


    init {
        setScaleType(ScaleType.MATRIX)
    }
}

enter image description here

为什么收缩?我该怎么做才能仍然使用ScaleType.MATRIX并使其最初显示在适合屏幕的位置?

解决方法

默认情况下,Matrix比例类型将不应用任何比例类型,因此图像将被调整为原始尺寸。

在这种情况下,图像小于视图,因此缩小了。如果不指定ScaleType,它将使用FitCenter,因此会放大较小的图像以适合视图大小。

更多说明here