2016-12-12 3 views
9

vectorDrawablesAndroid Studio의 ImageView으로 설정하고 싶습니다.ImageView의 이미지로 프로그래밍 방식으로 VectorDrawable을 설정하는 방법

쉽게 png 및 jpg 드로어를 설정할 수 있지만 VectorDrawable을 설정하려는 경우 이미지 뷰에서 작동하지 않습니다.

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 개발자가이 멋진 기사 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" 
    /> 

자바

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" 

당신은 포함해야합니다 :

onCreate

그리고 API (21) 적은 다음 벡터 지원 36,다음 추가 : 내가 img.setImageResource (R.drawable.ic_home)를 사용하던 재활용보기에서 벡터를했다

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
+3

은 KitKat에서 여전히 작동하지 않습니다.> = 5.1에서만'setImageResource'와 함께 작동합니다. – user924

+0

KitKat에서이 작업이 가능합니다. https://stackoverflow.com/a/35918375/7767664 – user924

1

하는 일부 다른 이미지처럼 제대로 작동하지 않았다. 그런 다음 리사이클 뷰의 일부 항목이 만들어졌다. img.setImageDrawable (activity.getResources(). getDrawable (R.drawable.ic_home))이 작업이 성공했다. 사용 android.support.v7.widget.AppCompatImageButton

0

, android.support.v7.widget.AppCompatImageView, android.support.v7.widget.AppCompatTextView 대신 하여 ImageButton, 이미지 뷰 등 벡터 형식 이미지를 사용하는 경우.

주로 사용자 지정보기 용입니다.

관련 문제