如何在 kotlin 中扩展 ImageView class?

how to extend ImageView class in kotlin?

我在 kotlin 中扩展 ImageView 时发现了奇怪的行为。 我有以下布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    <AlphaImage
            android:id="@+id/imageView2"
            android:layout_width="320dp"
            android:layout_height="50dp"
            app:srcCompat="@drawable/blitz_1st_place" />
</FrameLayout>

AlphaImage class:

class AlphaImage(context: Context,attrs:AttributeSet?=null):ImageView(context,attrs) {
}

android studio 中的布局预览显示图像为 100% 透明,runtime.There 布局中没有错误 editor.What 有趣的是如果我更改 AlphaImageImageView 图像开始显示其内容为 expected.Why 这是怎么回事?如何扩展 ImageView

这里的问题是 app:srcCompat 属性。这是 AppCompatImageView class 的 support/androidx 库属性。框架 ImageView 将忽略它。

之所以在您使用 <ImageView> 标签时起作用,是因为 AppCompatActivity 使用的 support/androidx LayoutInflater 会自动将 AppCompatImageView 替换为它找到的任何 <ImageView> 标签。 AppCompatImageView 然后会看到 app:srcCompat 属性,并适当地处理它的值。

如果您希望自定义 class 自动处理该属性,只需扩展 AppCompatImageView 而不是 ImageView