我已经拥有的东西:
这是我的ImageView:
<ImageView
android:id="@+id/play_pause"
android:layout_width="match_parent"
android:layout_height="@dimen/timer_button_layoutHeight"
app:srcCompat="@drawable/play_button_vector"
android:onClick="startOrPauseTimer"/>
我正在使用Android插件版本2.0:
classpath 'com.android.tools.build:gradle:2.0.0'
我在应用程序级别build.gradle的android的defaultConfig中启用了vector drawable支持库标志:
vectorDrawables.useSupportLibrary = true
我还添加了vector drawable支持库依赖项:
compile 'com.android.support:support-vector-drawable:23.2.1'
在Activity类中,我基于点击侦听器动态更改矢量drawable:
playPauseButton = (ImageView) findViewById(R.id.play_pause);
playPauseButton.setImageResource(R.drawable.play_button_vector);
问题:
我在棒棒糖前设备中遇到资源未找到异常。该代码适用于棒棒糖以上。
android.content.res.Resources $ NotFoundException:File 可绘制资源ID#0x7f020119
我无法在图像所在的位置看到任何东西。但是,如果我点击图像所在的那个地方,它会被clickListener捕获。我做错了什么?
答案 0 :(得分:1)
根据Android开发者最近的帖子,
对于AppCompat用户,由于版本23.2.0 / 23.2.1 https://code.google.com/p/android/issues/detail?id=205236中的实现中发现的问题,我们决定删除允许您使用Lollipop前设备上的资源使用矢量绘图的功能。使用app:srcCompat和setImageResource()继续工作。
来源:https://plus.google.com/+AndroidDevelopers/posts/iTDmFiGrVne
答案 1 :(得分:1)
尝试使用此而不是ContextCompat.getDrawable()。
Drawable d = AppCompatDrawableManager.get().getDrawable(context, resID);
答案 2 :(得分:0)
我已尝试过上述所有解决方案。没有什么对我有用。唯一对我有用的是非常简单的是将所有支持库更新到最新版本,因为已经修复了这个bug。所以我简单地在构建中做了以下事情,gradle更新了SDK并支持25。
android {
compileSdkVersion 25
buildToolsVersion "25"
defaultConfig {
targetSdkVersion 25
}
}
In dependencies
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
compile 'com.android.support:recyclerview-v7:25.1.0'