2016-12-12 6 views
9

ベクタードローブに、Android StudioのImageViewに設定します。ImageViewの画像としてVectorDrawableをプログラムで設定する方法

私はpngとjpg drawableを簡単に設定できますが、VectorDrawableを設定したい場合は、imageviewでは動作しません。

img.setImageResource(R.drawable.ic_home); 

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

+1

https://blog.stylingandroid.com/vectordrawables-part-1/ –

+0

私はここに答えました。これが役立つかもしれません。あなたは今ベクトル描画可能を変更することができます。 http://stackoverflow.com/a/42281780/4517450 –

答えて

12

公式android developer blogによると、実行時にvectorDrawablesのsetImageResource()メソッドに変更はありません。

あなたは、実行時にドローアブルを変更している場合は、以前と同じ setImageResource() メソッドを使用することができます - そこに変化なし。 AppCompatとapp:srcCompatを使用すると、 アプリにベクトルドロアブルを統合する最も簡単な方法です。

詳細については、Google DeveloperのAppCompat — Age of the vectorsをご覧ください。

6

後方互換性に懸念がある場合は、pfイメージ表示の代わりに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" 
    /> 

javaの

AppCompatImageView image = (AppCompatImageView) findViewById(R.id.iv_about); 
image.setImageResource(); 

そして、それはapp:srcCompatの視点を提供します。

+2

ドキュメントによれば、「これはレイアウトでImageViewを使用するときに自動的に使用され、トップレベルのアクティビティ/ダイアログはappcompatによって提供されます。カスタムビューを作成するときには、このクラスを手動で使用する必要があります。 拡張しない限りImageViewだけを使用できます。 – Adrian

+0

@ user924あなたは正しいです。 –

+0

@ user924アクティビティがAppCompatActivityを継承している限り、ImageViewを使用できるとは指定していませんでした。あなたがしなければ、あなたが言ったようなものです。 – Adrian

20

あなたはベクトルドローアブルを使用したい場合(API 21未満またはそれ以上)だけで次の操作を行います

imageView.setImageResource(R.drawable.ic_left_arrow_blue); 

またはXMLによって:

は、プログラム(例えば、あなたの活動の)画像を設定します。あなたのアプリのbuild.gradle

app:srcCompat="@drawable/your_vector_name" 

あなたは含める必要があります。

android { 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
    } 
} 

そしてAPI 21少ないし、ベクタサポートのため、onCreateに次の行を追加します。

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
+3

はまだKitKatでは機能しませんが、> = 5.1の場合にのみ 'setImageResource'で正しく動作しますKitKatの – user924

+0

これはhttps://stackoverflow.com/a/35918375/7767664でのみ動作します – user924

1

私はimg.setImageResource(R.drawable.ic_home)使用したリサイクルビューでベクトルを持っていましたいくつかの他のイメージのように正常に動作しませんでしたリサイクルビューのいくつかの項目で形成された後私は使用img.setImageDrawable(activity.getResources()。getDrawable(R.drawable.ic_home))これは働いた。

0

使用android.support.v7.widget.AppCompatImageButtonandroid.support.v7.widget.AppCompatImageViewandroid.support.v7.widget。代わりのImageButtonImageViewの等のAppCompatTextViewベクトル型の画像が使用される場合。

主にカスタムビューです。

関連する問題