我在活动中的ImageView中使用vector,该应用在android 7.0上运行良好,但在android 4.4上崩溃。 Logcat说,Resources$NotFoundException
。我已经尝试过在这里发布关于stackoverflow的解决方案,但是似乎都没有用。
这些是我尝试过的解决方案。
在我的gradle文件中添加了这个
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
在活动的OnCreate中添加了此功能
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
在XML文件中将
android:src
替换为app:srcCompat
。这是我的XML代码
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_arrow_back_white_24dp"
android:tint="@color/colorPrimary"
android:id="@+id/details_back"
android:layout_margin="15dp"
android:layout_alignParentStart="true"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/share"
android:tint="@color/colorPrimary"
android:id="@+id/details_share"
android:layout_margin="15dp"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
这是JAVA文件中的代码
ImageView detail_share;
detail_share = (ImageView) findViewById(R.id.details_share);
detail_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// code for sharing item
}
});
此外,尽管完全相同,但错误发生在第二个ImageView中,而不是第一个中。我也在Java文件中对待两个图像完全相同。
最佳答案
几天前我遇到了同样的问题。 Android 4.4不支持带有(v21)的矢量,而矢量(v21)在android studio目录树中的名称后面带有褪色字体,这些矢量图形仅受API 21+支持。理想情况下,Android Studio应该将矢量分成大小不同的PNG文件,但出于某些不清楚的原因,Android Studio有时不会自行完成。
看起来您在上述情况下尝试将矢量图形用于“共享”图标,尝试仅从Android Studio中的“材质”图标导入共享图标,这样导入的矢量也受Android 4.4支持。
关于java - Android 4.4上的Resources $ NotFoundException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46863169/