Material theme을 사용하면서 왜 Elevation 설정을 해제하려고 할까앱에서 원하는 색상을 적용하기 어렵다. Material theme만 적용하게 되면 상관이 없겠지만,iOS나 다른 플랫폼과 색상을 맞추기 위해서는 Material theme만을 사용할 수가 없다. 왜 하필 elevation이냐... 그건 바로 elevation을 통해 shadow를 적용했는데Material theme 설정 때문에 내가 지정한 View의 backgroundTint를 적용할 수 없었다. 예를 들면?MaterialCardView가 있다. Appcompat의 CardView를 상속받아 만들어졌는데cardElevation을 0 초과로 설정하는 순간 내 기본 테마 색상에서더 진한 채도를 가진 색상으로 background..
글 작성 배경이 글을 적게 된 배경은 뭘까? 나는 시간이 어느 정도 지난 개인 프로젝트를 오랜만에 다시 만지고 있었다. 이 때, Material 라이브러리 버전과 targetSdk 버전을 동시에 올리면서BottomNavigationView 배경 색상이 내가 사용하지 않는 기본 색상으로 적용이 되었다. 샘플 앱을 대충 만들면 나오는 그 보라색 말이다. 나는 Material 라이브러리의 Color system을 사용하고 있었는데도 이런 현상이 발생했다. 문제 지점 찾기분명 라이브러리에서 BottomNavigationView의 background color를 정의하는 부분이 있을 것이라 생각했다. 그럼 라이브러리에서 어떤 color를 사용할까? 바로 Material 공식 사이트에서 확인할 수 있었다. 스크린샷..
오늘은 저번 글에 이어 저사양 디바이스를 타겟팅해 앱을 개발하던 중 발견하게 된 증상을 공유해본다.(갤럭시와 같은 휴대폰 중 저사양 디바이스가 아닌 안드로이드 TV용 박스를 가지고 개발했다.) 나는 이 증상을 처음 보고 적잖이 당황했었다. 뭐랄까.. 지금까지 알던 세상이 부정당한 느낌..? 항상 되던 것이 안되니 말이다. 원인이런 끔찍한 현상이 생긴 원인이 뭘까? 바로 Animation 길이 배율 설정(Animator duration scale)이다. 평소에는 신경도 안 쓸 설정 메뉴이지만, 저사양 기기에서는 성능을 올리기 위해서인지 꺼져 있었다. 이거... 어디 있는 메뉴일까? 정답은 개발자 옵션에 있다. 기본 설정이 1x로 되어있는 디바이스가 대부분일텐데 내가 개발했던 녀석은 사용 안함이 기본이었다...
이번에는 material 라이브러리를 사용하면서 겪었던 커서 색상 변경에 관련한 에피소드를 하나 풀어보려 한다. 일단 내가 현재 사용하는 버전은 1.9.0 버전이다. Material EditText 사용법 흔히 사용하는 EditText를 material 라이브러리에선 TextInputEditText로 대체하는데 이를 TextInputLayout으로 감싸서 사용한다. Theme 설정하기 나의 경우에는 boxStrokeColor는 xml에서 속성으로 설정이 가능했지만 cursor 색상을 설정할 수가 없었다. (물론, 코드 상으로도 말이다.) 그럼 cursor color는 어디서 바꿔? 답만 말하자면 colorControlActivated 속성의 색상을 바꿔주어야 한다. material에는 여러 속성의 색상이..
ㅇ저번 글에서 나는 DateRangePicker가 Dialog처럼 실행되게 설정해보았다. 이번에는 2주 전 날짜부터 오늘 날짜까지 선택된 상태로 실행되는 기능을 만들어보려 한다. 오늘 날짜 및 2주 전 날짜 선택된 상태로 실행하기 DatePicker와 달리 DateRangePicker에서 사용하는 클래스가 있다. Pair 라는 녀석인데 이 녀석의 패키지는 androidx.core.util이다. 얘로 뭘하려고 할까? 시작과 종료 날짜를 지정한다. 코드를 먼저 첨부하고 설명을 이어가보겠다. https://gist.github.com/BonusTrack02/5587dfd7b87cad867f716bff4ba70575 DateRangePicker using Material3 theme and set current..
이번 글에서는 머터리얼에서 제공하는 날짜 범위 선택 기능에서 내가 사용한 몇가지 설정을 공유하려고 한다. 달력 생성 방식(?) 맨처음 문제가 되었던 녀석이다. 바로, 내가 원하던 방식은 Dialog처럼 선택기가 보이는 것이었다.(BottomSheet 관련 글에서 소개했던 Modal 방식을 원했다.) 하지만, 일반 바(bar)형 기종에서는 전체화면(액티비티같은?)으로 DateRangePicker가 실행되었다. 특이하게 폴드 기종이나 태블릿에서는 DateRangePicker가 Dialog처럼 실행되었다. 정확히 찾아보진 않았지만 머터리얼에서 휴대폰 스크린 사이즈에 따라 실행 방식을 다르게 두었다고 생각을 했고 결국 머터리얼에서 이를 제어하기 위해서는 스크린 사이즈에 따라 테마를 다르게 설정했다고 생각했다. ..
저번 글에서는 BottomSheet의 높이를 조절했다. 이번에는 BottomSheet Scrim 영역(외부 영역)을 터치 시 BottomSheet가 내려가지 않도록 해보겠다. 코드를 설명하기 앞서 이런 동작을 유도한 이유가 있는데 BottomSheet에는 2가지 종류가 있다. Standard bottom sheet, Modal bottom sheet이다. https://m3.material.io/components/bottom-sheets/guidelines (Material design 공식 사이트 설명이다) 공식 사이트를 보면 Modal 방식의 바텀 시트는 Standard 방식과 달리 다이얼로그처럼 앱 컨텐츠 영역 앞에 보이게 되고 다른 앱 기능을 일시적으로 제한한다. 그래서 Scrim 영역(외부 영..