1. Box
요소의 겹침을 허용하는 것이 특징
Column, Row가 LinearLayout과 비슷한 Composable이라면, Box는 FrameLayout과 비슷
setContent {
ComposeTheme {
// 모든 Composable은 Modifier를 적용할 수 있음
Box {
Text(text = "Hello")
Text(text = "12123123~~~~")
}
}
}
위와 같이 Box만 선언 했을 땐 2개의 Text가 겹치는 것을 볼 수 있음
Box(
modifier = Modifier
.background(color = Color.Green)
.fillMaxWidth()
.height(200.dp),
contentAlignment = Alignment.TopEnd
) {
Text(text = "Hello")
Text(text = "12123123~~~~")
}
Modifier를 통해 Box의 크기, 색상 등을 수정할 수 있고, contentAligment를 통해 Box 내의 요소의 위치를 지정할 수 있음
( 추가로 모든 Composable은 Modifier 사용 가능 )
만약 2개의 Text 중 하나의 Text만 옮기고 싶다면, 새로운 Box로 감싸주어야함
setContent {
ComposeTheme {
// 모든 Composable은 Modifier를 적용할 수 있음
Box(
modifier = Modifier
.background(color = Color.Green)
.fillMaxWidth()
.height(200.dp),
) {
Text(text = "Hello")
Box(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
contentAlignment = Alignment.BottomEnd
) {
Text(text = "12123123~~~~") // 이 글자만 오른쪽 아래로 옮기고 싶다면? Box로 감싸기
}
}
}
}
이렇듯 Column, Row, Box는 Compose의 기본 레이아웃에 해당하는 Composable이라고 생각할 수 있음
'안드로이드 > Compose' 카테고리의 다른 글
[Compose] - State가 변경 되어도 UI에 반영이 안되는 이슈 해결 (0) | 2024.10.07 |
---|---|
[Compose] - LazyRow 아이템 최대 높이로 고정하기 (8) | 2024.10.03 |
[Compose] - Design System 구축 - 2. ColorScheme 만들기 (0) | 2024.08.04 |
[Compose] - Design System 구축 - 1. Typography 만들기 (0) | 2024.08.02 |