Bottom sheet 형태의 모달 컴포넌트입니다.
시스템 Bottom sheet 또는 커스텀 드래그가 가능한 Bottom sheet를 사용할 수 있습니다.
var showSheet by remember {mutableStateOf(false)}val listState =rememberLazyListState()// Foundation 1.8.x부터 anchoredDraggable이 nestedScroll 체인에 참여하면서, LazyColumn 스크롤 잔여값이 시트로 전달되어 튕김 버그가 발생할 수 있습니다.val scrollPolicy =rememberBottomSheetScrollPolicy(listState)WantedModalBottomSheet(
isShow = showSheet,
onDismissRequest ={ showSheet =false},
content ={// 목록 스크롤은 LazyColumn이 담당하고, 위로 남는 잔여 스크롤만 정책으로 차단합니다.// LazyColumn 에서만 Modifier.nestedScroll(scrollPolicy.connection) 추가 합니다.Column(modifier = Modifier.nestedScroll(scrollPolicy.connection)){LazyColumn(state = listState){// items(...)}}})
Parameters
이름
타입
설명
isShow
Boolean
모달 표시 여부입니다.
onDismissRequest
() -> Unit
모달이 닫힐 때 호출되는 콜백입니다.
modifier
Modifier
컴포넌트에 적용할 Modifier입니다.
background
Color
배경 색상입니다.
type
ModalType
모달의 형태입니다.
sheetDefault
WantedBottomSheetDefault
Bottom Sheet 의 모양·여백 설정입니다. 기본값은 [type] 에 맞춰 골라집니다 (Full 만 별도 값).
dismissOnClickOutside
Boolean
외부 클릭 시 닫힘 여부입니다.
topBar
(@Composable () -> Unit)?
상단 바 슬롯입니다.
bottomBar
(@Composable () -> Unit)?
하단 바 슬롯입니다.
content
(@Composable () -> Unit)
본문 콘텐츠 슬롯입니다.
Advanced
WantedBottomSheetDefault
Bottom Sheet / Full 의 모양과 여백을 정의하는 데이터 클래스입니다.
값을 바꿔 쓸 때는 [WantedBottomSheetDefaults.getDefault] · [WantedBottomSheetDefaults.getFullDefault] 의 인자로 넘기거나 copy 를 사용합니다.
여백은 디자인 4.0.0 기준으로 ModalSize 와 무관하게 통일되어 있고, Full 만 별도 값을 사용합니다.
Properties
이름
타입
설명
shape
RoundedCornerShape
Bottom Sheet 의 모서리 둥글기입니다. Full 은 화면 전체를 덮으므로 0dp 입니다.
navigationPadding
Dp
Navigation 영역에 Bottom Sheet 가 추가로 얹는 여백입니다. 여백 자체는 Navigation 컴포넌트가 소유하므로 기본값은 0dp 입니다.
Full 의 모서리 둥글기입니다. Android 의 Full 은 상태바 아래에서 시작해 상단 모서리가 보이므로 Bottom Sheet 와 같은 값을 씁니다.
navigationPadding
Dp
Navigation 영역에 추가로 얹는 여백입니다.
contentHorizontalPadding
Dp
Content 영역의 좌우 여백입니다.
contentVerticalPadding
Dp
Content 영역의 상하 여백입니다.
actionHorizontalPadding
Dp
Action Area 의 좌우 여백입니다.
actionVerticalPadding
Dp
Action Area 의 상하 여백입니다.
Return
타입
설명
WantedBottomSheetDefault
설정된 WantedBottomSheetDefault 인스턴스를 반환합니다.
getWithoutContentPadding
Content 여백만 0 으로 지운 설정을 생성합니다. Navigation · Action Area 여백은 스펙 값을 그대로 씁니다.
호출부가 본문 여백을 직접 주고 있는 화면에서 이중 패딩을 피하려고 씁니다. 신규 화면은 [getDefault] · [getFullDefault] 를 그대로 쓰세요.