2016-12-12 88 views
9

我想將某些vectorDrawables設置爲Android Studio中的ImageView如何以編程方式將VectorDrawable設置爲ImageView的圖像

我可以很容易地設置png和jpg,但是當我想設置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和應用程序:srcCompat 是將矢量繪圖集成到您的 應用程序中最簡單的方法。

有關更多詳細信息,請查看Google Developer的漂亮文章AppCompat — Age of the vectors

6

如果您關心的是向後兼容性,那麼您應該使用AppCompatImageView代替pf圖像視圖。通過下面的代碼。

<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:

app:srcCompat="@drawable/your_vector_name" 

在您的應用程序的build.gradle你需要包括:

android { 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
    } 
} 

和爲少於21 API支持向量,添加以下onCreate

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
+3

仍然不適用於KitKat,只適用於> = 5.1它適用於'setImageResource' – user924

+0

KitKat只適用於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。AppCompatTextView代替的ImageButtonImageView的等,如果使用向量型圖像。

主要用於自定義視圖。

相關問題