34

サポート ライブラリ 23.2に追加されたサポート ベクター ドローアブルを AppCompat と共に使用していました。私はTextViewでそれらを使用できるように、ベクトルドローアブルをapp:srcCompata と一緒に使用していました。StateListDrawableandroid:drawableLeft

AppCompat の 23.3.0 バージョンにアップグレードして以来、ベクトルのみapp:srcCompatが機能しています。私がそれを別の方法で参照するときはいつでも

FATAL EXCEPTION: main
 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.package.name/.MainActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class Button
 ...
 Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class Button
 ...
 Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #14: invalid drawable tag vector
  at android.graphics.d

場合によってはサポート ベクター ドローアブルが失敗する原因となる変更は何ですか?

4

3 に答える 3

43

更新:サポート ライブラリ 23 で再度有効にします。

AppCompat ユーザー向けに、オプトイン API を追加して、AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); を介して、リソースからのベクター ドローアブルのサポート (23.2 で見つかった動作) を再度有効にしました。- これにより、メモリ使用量の問題や構成インスタンスの更新の問題が引き続き発生する可能性があるため、デフォルトで無効になっていることに注意してください。

このリンクを確認してください: 23.4.0 が利用可能になりました
------------------------------------------ ------------------

Android Support Library 23.3 のリリース発表によると:

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

したがって、これは予想される動作の変更です。で処理されない場合は、非ベクター グラフィックスを使用する必要がありますsrcCompat

API 21 より前のベクターを引き続き使用する場合は、次の行を削除できます。

vectorDrawables.useSupportLibrary = true

(または、 23.2 ブログ投稿に示されているように 1.5 Gradle プラグインを使用している場合は同等です)。

これにより、Android Studio は、API 21 以降のデバイスでベクターを使用しながら、API 21 未満の minSdkVersion を持つアプリのコンパイル時に PNG を生成し23.2.1、追加の APK サイズを犠牲にして同じコードを保持できるようにします。

于 2016-04-07T18:49:13.970 に答える