Android StudioでvectorDrawablesをImageViewに設定したい。
Pngとjpgのドロアブルを簡単に設定できますが、VectorDrawableを設定したい場合、imageviewでは機能しません。
img.setImageResource(R.drawable.ic_home);
ic_homeはVectorDrawableであり、このコードは機能しません。
ベクタードローアブル(API 21よりも小さいOR)を使用する場合は、次を実行します。
プログラムで画像を設定します(アクティビティなどで):
imageView.setImageResource(R.drawable.ic_left_arrow_blue);
またはXMLで:
app:srcCompat="@drawable/your_vector_name"
アプリのbuild.gradle
に含める必要があるもの:
Android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
また、API 21未満のベクターをサポートするには、次をonCreate
に追加します。
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
DrawableLeftの設定など、他の用途のためにプログラムでベクトルDrawableをロードする場合は、次を使用できます。
Drawable drawable = AppCompatResources.getDrawable(context, drawableRes);
ここで、コンテキストはAppCompatActivityです。
公式 Android開発者ブログ により、vectorDrawablesの実行時のsetImageResource()メソッドの変更はありません。
実行時にドロアブルを変更する場合、以前と同じ setImageResource() メソッドを使用できます-変更はありません。 AppCompatとapp:srcCompatを使用することは、ベクタードロアブルをアプリに統合する最も確実な方法です。
詳細については、このニースの記事をご覧ください AppCompat — Age of the vectors by Google Developer。
後方互換性に懸念がある場合は、イメージビューの代わりにAppCompatImageView
を使用する必要があります。以下のコードをご覧ください。
<Android.support.v7.widget.AppCompatImageView
Android:id="@+id/iv_about"
Android:layout_width="150dp"
Android:layout_height="150dp"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
app:srcCompat="@drawable/ic_vector_image"
/>
Java
AppCompatImageView image = (AppCompatImageView) findViewById(R.id.iv_about);
image.setImageResource(R.drawable.ic_vector_image);
そして、app:srcCompat
の観点を提供します。
Javaコードの使用:
formate_img.setImageResource(R.drawable.ic_text);//ic_text is a Vector Image
およびXML使用の場合:
<Android.support.v7.widget.AppCompatImageView
Android:id="@+id/search_btn"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="20dp"
Android:layout_weight="1"
ads:srcCompat="@drawable/ic_barcode" //for Vector Image
tools:ignore="VectorDrawableCompat" />
私はimg.setImageResource(R.drawable.ic_home)
を使用しているリサイクラービューにベクターがありましたが、これはリサイクラービューのいくつかのアイテムで形成される他の画像のように適切に機能しませんでした。それからimg.setImageDrawable(activity.getResources().getDrawable(R.drawable.ic_home))
を使用しました。
これを使って:
Android.support.v7.widget.AppCompatImageButton,
Android.support.v7.widget.AppCompatImageView,
Android.support.v7.widget.AppCompatTextView
ImageButton
、ImageView
などの代わりに.
ベクタータイプの画像が使用されている場合。主にカスタムビュー用。