개발자 블로그

ImageView에 setColorFilter가 적용되지 않는다면.. 본문

프로그래밍/안드로이드

ImageView에 setColorFilter가 적용되지 않는다면..

로이드.Roid 2017. 11. 17. 01:54

오늘 이거 때문에 짜증나 죽는 줄 알았네.. 쉽게 찾을 수 있는 문제였는데 안될려면 이렇게도 안된다.

일단 상황 설명을 좀 해야될 것 같은데,

설정화면에서 색상을 선택할 수 있는 UI를 구현하고 있었다.

색상을 표시하기 위해서 ImageView를 사용했고, xml 파일에서 ImageView의 src 속성 적용해줬다. 

사용자가 Color Picker를 통해서 색상을 선택하면, 아래 코드를 통해서 ImageView에 적용한 Drawable의 색상을 변경해준다. 


selColorView = view.findViewById(R.id.img_sel_color);
if (selColorView != null) {
selColorView.setColorFilter(selColor);
}

안드로이드 N(누가)에서는 잘 동작하는 코드가 롤리팝에서는 적용되지 않았다. if조건에 걸리는건 아니었고, setColorFilter까지 제대로 호출은 되는데.. 결과적으로 색상은 바뀌지 않는문제.


원인을 찾는건 어려웠지만 해결은 간단했다.

<ImageView
android:id="@+id/img_sel_color"
android:contentDescription="@null"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:tint="#f00"
android:src="@drawable/ic_opaque_black_24dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

xml 코드에서 저기 저 강조표시한 "android:tint" 속성을 지워주면 된다.

디폴트 색상을 적용해야 된다면 코드를 통해서 해줘야 될 것 같다.

Comments