web-dev-qa-db-ja.com

プログラムでImageDrawの画像としてVectorDrawableを設定する方法

Android St​​udioでvectorDrawablesImageViewに設定したい。

Pngとjpgのドロアブルを簡単に設定できますが、VectorDrawableを設定したい場合、imageviewでは機能しません。

img.setImageResource(R.drawable.ic_home);

ic_homeはVectorDrawableであり、このコードは機能しません。

42
Hamid.Waezi

ベクタードローアブル(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);  
92
Pramod Baggolli

DrawableLeftの設定など、他の用途のためにプログラムでベクトルDrawableをロードする場合は、次を使用できます。

Drawable drawable = AppCompatResources.getDrawable(context, drawableRes);

ここで、コンテキストはAppCompatActivityです。

20
Jawnnypoo

公式 Android開発者ブログ により、vectorDrawablesの実行時のsetImageResource()メソッドの変更はありません。

実行時にドロアブルを変更する場合、以前と同じ setImageResource() メソッドを使用できます-変更はありません。 AppCompatとapp:srcCompatを使用することは、ベクタードロアブルをアプリに統合する最も確実な方法です。

詳細については、このニースの記事をご覧ください AppCompat — Age of the vectors by Google Developer。

17
Priyank Patel

後方互換性に懸念がある場合は、イメージビューの代わりに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の観点を提供します。

12
sanjeev kumar

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))を使用しました。

2
JSONParser

これを使って:

Android.support.v7.widget.AppCompatImageButton, 
Android.support.v7.widget.AppCompatImageView,
Android.support.v7.widget.AppCompatTextView 

ImageButtonImageViewなどの代わりに.

ベクタータイプの画像が使用されている場合。主にカスタムビュー用。

0
masoomyf