사진과 같은 BottomSheetDialog를 구현해보고자 한다.
백그라운드에 대한 drawable을 만들어서 최상위 뷰의 background로 지정하면 되지 않을까 생각했었는데 적용되지 않았다.
background를 지정해주어야 하는 건 맞지만 themes.xml에서 설정해주어야한다. themes.xml에서 설정하는 글 들이 많이 있지만, 따라해도 안되는 경우가 많았다.
같은 경우라면 아래의 코드를 시도해보면 좋을 듯하다.
바텀 시트 백그라운드 생성
background_bottom_sheet.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white"/>
<corners
android:topRightRadius="30dp"
android:topLeftRadius="30dp"/>
</shape>
원하는 모양으로 배경을 생성해준다.
Themes.xml 설정
themes.xml에 다음과 같은 코드를 추가해준다.
<resources>
/.../
<style name="AppBottomSheetDialogTheme"
parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/AppModalStyle</item>
</style>
<style name="AppModalStyle"
parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@drawable/background_bottom_sheet</item>
</style>
</resources>
그 후, 기본적으로 선언되어 있던 <style name="Theme.앱이름" parent="~~~"></style> 태그 사이에 아래 코드를 추가한다.
<style name="Theme.Smiley" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
/*...*/
<item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
</style>
이렇게만 해주면 간단하게 테두리가 변경된 것을 볼 수 있다.
'안드로이드 > 이론' 카테고리의 다른 글
[ 안드로이드 ] Room DB - Dao 사용법 (0) | 2023.04.08 |
---|---|
[ 안드로이드 ] RecylcerView + Filterable을 이용하여 실시간 검색 기능 구현하기 (0) | 2023.04.07 |
[ 안드로이드 ] - Selector를 이용하여 버튼, 체크박스 등에 클릭 효과 주기 (0) | 2023.03.29 |
[ 안드로이드 ] Handler를 통한 Viewmodel 변수 상태 체크하기 (0) | 2023.03.21 |
[ 안드로이드 ] 해상도 대응, 다양한 화면 크기 지원 (0) | 2023.01.31 |