개발자 블로그
ImageView에 setColorFilter가 적용되지 않는다면.. 본문
오늘 이거 때문에 짜증나 죽는 줄 알았네.. 쉽게 찾을 수 있는 문제였는데 안될려면 이렇게도 안된다.
일단 상황 설명을 좀 해야될 것 같은데,
설정화면에서 색상을 선택할 수 있는 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" 속성을 지워주면 된다.
디폴트 색상을 적용해야 된다면 코드를 통해서 해줘야 될 것 같다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
Android screenshots save location and name (1) | 2017.12.12 |
---|---|
안드로이드 기기별 스크린샷 저장 위치 및 파일명 (0) | 2017.12.12 |
시스템이 앱 종료시키는 상황 테스트하는 방법 (0) | 2017.10.25 |
안드로이드 ProgressDialog Deprecated 관련 삽질 기록 (0) | 2017.09.27 |
안드로이드 오레오 대응 개발 후기 (0) | 2017.09.26 |
Comments