在旧的SDK中,将矢量可绘制对象设置为ImageView会导致应用程序崩溃

3

我在图像的src中使用了矢量图形Drawable,像这样:

 <ImageView
                android:id="@+id/isSold"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:visibility="gone"
                app:srcCompat="@drawable/ic_soldout_24px"
                tools:ignore="MissingPrefix"/>

我也将这些添加到了清单文件中:
defaultConfig {
        vectorDrawables.useSupportLibrary=true
    }

我使用了 compile 'com.android.support:appcompat-v7:23.2.1'

但是我的应用在旧版sdk中崩溃,并显示 Error inflating class ImageView 的错误信息。


如果你移除了 app:srcCompat="@drawable/ic_soldout_24px",它还会崩溃吗? - pskink
2个回答

13

使用 android.support.v7.widget.AppCompatImageView 替代 ImageView:

 <android.support.v7.widget.AppCompatImageView
    android:id="@+id/isSold"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:visibility="gone"
    app:srcCompat="@drawable/ic_soldout_24px"
    tools:ignore="MissingPrefix"/>

1
不需要使用“AppCompat*”视图,因为在使用appcompat库时它们会自动注入。 - pskink
谢谢。愉快编码 :) - Er.Rohit Sharma
@pskink . 我该如何使用ImageView,使其像支持imageView一样工作,只要我将支持库添加到Gradle中? - Mahdi
@Kenji 只需使用 <ImageView> 标签,启动您的活动并执行命令 adb shell dumpsys activity top - pskink
谢谢Rohit,帮了大忙 :) - Mr. Bean

1

如果顶层活动/对话框由 android.support.v7.app.AppCompatActivity 提供,则应使用普通的 <ImageView>

仅在编写自定义视图时需要手动使用 AppCompatImageView

这是来自文档的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接