코틀린 & 컴포즈 & Java/컴포즈 Compose

[Compose] UI를 구성할 때 요소를 정렬하는 방법

코딩하는후운 2025. 2. 10. 14:12
반응형

Box, Row, Column, LazyColumn, LazyRow 기본 컨테이너에서 정렬 방법

 

1. Box

- 자식 요소를 원하는 위치에 배치할 수 있는 컨테이너

정렬 방법

  • contentAlignment → 전체 자식 정렬
  • Modifier.align()각 자식 개별 정렬
Box(
    modifier = Modifier.fillMaxSize(),
    contentAlignment = Alignment.Center // 모든 자식 요소 기본 정렬
) {
    Text(
        text = "이 텍스트는 오른쪽 상단!",
        modifier = Modifier.align(Alignment.TopEnd) // 개별 정렬
    )
}

contentAlignment = Alignment.Center모든 자식 요소를 중앙에 배치
Modifier.align(Alignment.TopEnd)이 요소만 오른쪽 상단에 배치

 

2. Row 

- 자식 요소들을 가로로 나열하는 컨테이너

정렬 방법

  • verticalAlignment → 세로 정렬 (Row 내부)
  • horizontalArrangement가로 간격 조정
Row(
    modifier = Modifier.fillMaxWidth(),
    verticalAlignment = Alignment.CenterVertically, // 세로 중앙 정렬
    horizontalArrangement = Arrangement.SpaceBetween // 가로 양 끝 정렬
) {
    Text("왼쪽")
    Text("오른쪽")
}

verticalAlignment = Alignment.CenterVertically텍스트가 세로 중앙 정렬됨
Arrangement.SpaceBetween양쪽 끝에 요소 배치

 

3. Column

- 자식 요소들을 세로로 배치하는 컨테이너

정렬 방법

  • horizontalAlignment → 가로 정렬 (Column 내부)
  • verticalArrangement세로 간격 조정
Column(
    modifier = Modifier.fillMaxHeight(),
    horizontalAlignment = Alignment.CenterHorizontally, // 가로 중앙 정렬
    verticalArrangement = Arrangement.SpaceEvenly // 세로 간격 균등 배치
) {
    Text("위쪽 요소")
    Text("아래쪽 요소")
}

horizontalAlignment = Alignment.CenterHorizontally모든 자식이 가로 중앙 정렬됨
Arrangement.SpaceEvenly요소 간 간격이 균등해짐

 

4. LazyColumn & LazyRow

- 스크롤 가능한 리스트를 만들 때 사용

정렬 방법

  • horizontalAlignment → 가로 정렬 (LazyColumn에서만 사용 가능)
  • verticalAlignment세로 정렬 (LazyRow에서만 사용 가능)
  • contentPadding리스트 전체의 패딩 설정
LazyColumn(
    modifier = Modifier.fillMaxHeight(),
    horizontalAlignment = Alignment.CenterHorizontally, // 가로 정렬
    contentPadding = PaddingValues(16.dp) // 리스트의 전체 패딩 설정
) {
    items(10) { index ->
        Text("아이템 $index")
    }
}

horizontalAlignment = Alignment.CenterHorizontally모든 아이템을 가로 중앙 정렬
contentPadding = PaddingValues(16.dp)리스트의 패딩 추가

 

5. Modifier를 활용한 정렬 설정

Box(
    modifier = Modifier.fillMaxSize()
) {
    Text(
        text = "가운데 정렬된 텍스트",
        modifier = Modifier.align(Alignment.Center) // 부모 기준 중앙 배치
    )
}

 

반응형