이번에는 material 라이브러리를 사용하면서 겪었던
커서 색상 변경에 관련한 에피소드를 하나 풀어보려 한다.
일단 내가 현재 사용하는 버전은 1.9.0 버전이다.
Material EditText 사용법
흔히 사용하는 EditText를 material 라이브러리에선 TextInputEditText로 대체하는데
이를 TextInputLayout으로 감싸서 사용한다.
Theme 설정하기
나의 경우에는 boxStrokeColor는 xml에서 속성으로 설정이 가능했지만 cursor 색상을 설정할 수가 없었다.
(물론, 코드 상으로도 말이다.)
그럼 cursor color는 어디서 바꿔?
답만 말하자면 colorControlActivated 속성의 색상을 바꿔주어야 한다.
material에는 여러 속성의 색상이 존재하는데 내가 가장 많이 접한 속성으로는 colorControlNormal이 있다.
아 근데 이런거 모르겠고 답이나 내놓으라 한다면 style을 두 개 정의하고 그 중 하나를 TextInputLayout에 적용하면 된다.
방법은 gist로 확인해보자.
https://gist.github.com/BonusTrack02/8583da9230d8823ba3da7466f147da92
내가 올린 gist로 설명하자면, 먼저 CustomCursorColor style에서 parent가 ThemeOverlay.Material3.TextInputEditText.OutlinedBox로 설정돼있다.
하지만, CustomColoredTextField style에서 parent는
Widget.Material3.TextInputLayout.OutlinedBox로 설정돼있다.
(패키지명이 아예 다르다.)
두 스타일이 어떤 관계라 단언할 수는 없지만 상속 관계에 있기도 하다.
그래서 해당 스타일의 패키지명이 달라도 해당 속성이 적용되나 보다.
참고 : https://github.com/material-components/material-components-android/issues/820
'Android' 카테고리의 다른 글
Android ListAdapter submitList not refreshing (0) | 2024.04.08 |
---|---|
Android Selector 사용 시 주의사항 (1) | 2024.04.06 |
Android UrlQuerySanitizer getValue error (0) | 2024.02.06 |
Android ADB로 크래시 로그 저장하기 (0) | 2024.02.03 |
Android ADB로 스크린샷 저장하기 (0) | 2024.02.01 |