저번 글에서는 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 영역(외부 영역)을 터치했을 때에도 아무런 반응이 없도록 만들고 싶었다.
하지만, material 라이브러리의 기본 동작은 dismiss하도록 설정되어있었다.
이제 코드를 첨부하고 설명해보도록 하겠다.
https://gist.github.com/BonusTrack02/32133fcf0ff58661b7022f9dbe53aebd
여기서 DialogFragment의 버튼 텍스트 사이즈를 조절했던 것처럼 material 라이브러리의 뷰를 찾아와야 했다.
이전 글 : https://bonustrack02.tistory.com/entry/Android-DialogFragment-Button-Text-Size텍스트-크기-조절
여기서 내가 찾은 아이디는 touch_outside였다.
찾아온 뷰의 onClick 시 동작이 없도록 하기위해 setOnClickListener에 null을 설정해주었다.
이제 바텀 시트의 외부 영역을 눌러도 바텀 시트가 사라지지 않을 것이다.
23.09.12 추가
setOnClickListener에 null을 설정했을 때 안드로이드 스튜디오에서
보이는 warning이 불편하다면 람다식을 return해버리면 된다.
'Android' 카테고리의 다른 글
Android BottomSheet Material Theme 적용하기 (0) | 2023.09.15 |
---|---|
Android BottomNavigationView Uncheck All Items (0) | 2023.09.13 |
Android BottomSheetDialogFragment Height 조절하기 (0) | 2023.08.28 |
Android DialogFragment Button Text Size(텍스트 크기 조절) (0) | 2023.08.27 |
Android RecyclerView ItemDecoration in Kotlin (0) | 2023.07.21 |