Android BottomSheetDialogFragment Height 조절하기

2023. 8. 28. 02:30·Dev experience/Android
728x90
반응형

이번에 프로젝트를 진행하며 가장 힘들었던 BottomSheet의 높이를 조절하게된 과정을 소개하려고 한다.

 

내가 의견을 내서 사용하게된 Material 디자인의 BottomSheet 기능인데 이렇게 고된 길을 걷게 될 줄 몰랐다.

 

왜 BottomSheet height를 조절해야 하지?

Customizing이 된 BottomSheet를 사용하기 위해 BottomSheetDialogFragment를 상속하여 만든

CustomBottomSheetDialogFragment 클래스를 만들었다.

 

그리고 막연하게 onCreateView에서 뷰를 바인딩해주고 실행해본 결과 계속 BottomSheet가 엄청 찔끔 올라왔다.

 

해당 화면을 캡쳐해두진 않아서 보여줄 순 없지만 화면 높이의 1/10정도..?

 

이유는 기본적으로 Material 라이브러리의 BottomSheet 자체 높이가 WRAP_CONTENT이다.

 

내가 원하던 높이는 대충 화면의 반 이상을 차지하는 것이었다.

(최소한 내가 xml에서 배치한 뷰가 다 보일 정도)

 

다른 글을 아무리 찾아봐도 xml의 parent view height가 match_parent면 원하는 대로 나와요~ 라고 했다.

 

음... 원하는 대로 안 나오던데..

 

해서 그렇게 여러 조합을 통해 검색해보다 찾게 되었는데 이전에 썼던

DialogFragment에서 버튼 텍스트 사이즈를 조절했던 방법과 유사한 방법으로 해결하게 되었다.

(해당 링크 : https://bonustrack02.tistory.com/entry/Android-DialogFragment-Button-Text-Size%ED%85%8D%EC%8A%A4%ED%8A%B8-%ED%81%AC%EA%B8%B0-%EC%A1%B0%EC%A0%88)

 

onStart에서 해결하기

저번 글처럼 코드 먼저 첨부해보도록 하겠다.

https://gist.github.com/BonusTrack02/9727aa9a7d7a0b993fc290c9336f6627

 

onStart BottomSheet height

onStart BottomSheet height. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

내가 사용하는 bottomSheet는 material 라이브러리에 포함되어 있다는 것을 인지해야 한다.

 

그래서 해당 bottomSheet를 findViewById로 가져왔다.

(뷰를 찾을 때 패키지 명을 명시해줘야 찾을 수 있다.)

 

찾은 bottomSheet를 setLayoutParams를 통해 높이를 Int값으로 정하거나

WRAP_CONTENT or MATCH_PARENT로 정할 수 있다.

 

그리고 해당 bottomSheet를 show 메소드를 사용해 보여줄 때

바로 펼쳐진 상태로 내가 원하는 높이의 바텀 시트를 보여주기 위해 Behavior를 정의해주었다.

 

Behavior를 정의해줄 때 BottomSheetBehavior.from 메소드를 사용했는데

이 때 전달해줄 파라미터는 맨 처음 findViewById로 가져온 뷰이다.

 

펼쳐진 상태로 바텀 시트가 보이려면 setState를 통해 EXPANDED 상태로 설정해주어야 한다.

 

내가 첨부한 코드에서 추가로 설정한 것이 하나 있는데 setSkipCollapsed를 true로 설정했다.

 

이는 바텀시트를 한번 Collapse 상태로 만들것인가를 설정하는 것인데

나의 경우에는 뒤로 가기 버튼이나 드래그 핸들로 바텀 시트를 내렸을 때

바로 hidee되길 원했기 때문에 true로 설정해주었다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Dev experience > Android' 카테고리의 다른 글

Android BottomNavigationView Uncheck All Items  (0) 2023.09.13
Android BottomSheetDialogFragment Scrim 영역 터치 동작  (0) 2023.09.11
Android DialogFragment Button Text Size(텍스트 크기 조절)  (0) 2023.08.27
Android RecyclerView ItemDecoration in Kotlin  (0) 2023.07.21
Codelab으로 Room 알아보기 - 2. Create the SleepNight entity(ㄴ)  (0) 2023.07.09
'Dev experience/Android' 카테고리의 다른 글
  • Android BottomNavigationView Uncheck All Items
  • Android BottomSheetDialogFragment Scrim 영역 터치 동작
  • Android DialogFragment Button Text Size(텍스트 크기 조절)
  • Android RecyclerView ItemDecoration in Kotlin
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (239)
      • Dev experience (86)
        • Android (85)
        • Kotlin (1)
      • Study (63)
        • Kotlin (27)
        • Swift (17)
        • Java (19)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 전시회 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배열
    코루틴
    room
    자바
    jetpack
    aac
    coroutines
    Observer
    SWIFT
    PCCE
    CodeLab
    코틀린
    프로그래머스
    ios
    getNumericValue
    Material
    viewModelScope
    android
    안드로이드
    스위프트
    Kotlin
    오블완
    Java
    daterangepicker
    databinding
    MVVM
    ViewModel
    programmers
    티스토리챌린지
    LiveData
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
Android BottomSheetDialogFragment Height 조절하기
상단으로

티스토리툴바