1

私がすでに持っているもの:

これは私の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 でベクター ドローアブル サポート ライブラリ フラグを有効にしています。

vectorDrawables.useSupportLibrary = true

ベクター ドローアブル サポート ライブラリの依存関係も追加しました。

compile 'com.android.support:support-vector-drawable:23.2.1'

Activity クラスでは、クリック リスナーに基づいてベクター ドローアブルを動的に変更しています。

playPauseButton = (ImageView) findViewById(R.id.play_pause);
playPauseButton.setImageResource(R.drawable.play_button_vector);

問題:

ロリポップ以前のデバイスで Resource not found という例外が発生します。コードは、ロリポップ以降では正常に機能します。

android.content.res.Resources$NotFoundException: ドローアブル リソース ID #0x7f020119 からのファイル res/drawable/play_button_vector.xml

画像があるべき場所に何も見えません。ただし、画像があるはずの場所をクリックすると、clickListener によってキャッチされます。私は何を間違っていますか?

4

3 に答える 3

1

Android Developers の最近の投稿によると、

AppCompat ユーザーの場合、バージョン 23.2.0/23.2.1 https://code.google.comの実装で見つかった問題により、Lollipop 以前のデバイスのリソースからベクター型ドローアブルを使用できるようにする機能を削除することにしました。 /p/android/issues/detail?id=205236 . app:srcCompat と setImageResource() の使用は引き続き機能します。

ソース: https://plus.google.com/+AndroidDevelopers/posts/iTDmFiGrVne

于 2016-04-18T09:04:57.733 に答える
1

ContextCompat.getDrawable() の代わりにこれを試してください。

Drawable d = AppCompatDrawableManager.get().getDrawable(context, resID);
于 2016-05-19T11:14:03.480 に答える