Android 개발할 때에,

vector 이미지를 사용할 경우에 간혹 볼 수 있는 에러입니다. 

(사실 아이콘은 그렇게 관심을 두지 않아서 이번에 처음 봤습니다 ㅠ)

 

아래의 내용을 보면 결국 2가지를 해야 이 문제를 잡을 수 있습니다. 

 

1. Gradle에서 vector image 사용을 Enable  하는 것

  아래처럼 enable해줍니다. 

   (이 부분은 구글링하면 금방 나옵니다. )

defaultConfig {
  ... 

   vectorDrawables.useSupportLibrary = true
}

 

2. image source를 가져올 때, Attribute를 변경하는 것

<ImageButton
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:srcCompat="@drawable/baseline_refresh_24"  
/>

보통은 android:src 를 쓰는데, vector image를 사용할 때엔 위와 같이 변경해야 합니다.

 

1번과 2번을 동시에 적용해야지 문제가 해결되는데요, 

그건 아마도 support library 를 사용하기 때문에 약간의 차이가 생기는 것 같습니다. 

 

사실 1번의 설명에서도 2번을 하라는 이야기가 제법 있지만, 

"android:compat" 이라고 오타를 내는 바람에, 문제를 차지 못했었습니다. ㅠ

 

참고로 위의 버튼의 파일명은 baseline_refresh_24.xml 입니다. 

그 파일은 아래의 위치에서 얻을 수 있습니다. 

https://material.io/resources/icons/?icon=refresh&style=baseline

 

 

출처 : https://stackoverflow.com/questions/43752236/android-view-inflateexception-binary-xml-file-line-25-error-inflating-class-i

 

Android.view.InflateException: Binary XML file line #25: Error inflating class ImageButton, Resource NotFoundException, XmlPullP

In API: 19 Iam facing this Inflate Exception but Iam using AppCompatDrawableManager which supports as vector drawables in API:19 three Exceptions 1. Error in Inflate Image button 2. Resources$

stackoverflow.com