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

Setting ScaleType.MATRIX to Custom ImageView shrink the initial display of image

我正要创建自己的自定义 ImageView,所以我在下面制作 class。

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

默认情况下(即没有 setScaleType(ScaleType.MATRIX)),它看起来像下面(很适合屏幕)。

所以如果我在 init 中添加 setScaleType(ScaleType.MATRIX) 它就变成了下面这样。

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


    init {
        setScaleType(ScaleType.MATRIX)
    }
}

为什么缩小了?我怎样才能仍然使用 ScaleType.MATRIX 但它最初显示适合屏幕?

默认情况下,矩阵比例类型不应用任何比例类型,因此图像将调整为原始大小。

在这种情况下,图像比视图小,因此缩小得更小。如果不指定 ScaleType,它将 FitCenter,因此放大较小的图像以适合视图大小。

更多解释here