본문 바로가기
프로그래밍 놀이터/Compose

[android] margin in Compose

by 돼지왕 왕돼지 2022. 9. 12.
반응형

 

#

Android View 시스템에서 margin 은 View 가 가지고 있는 속성이었지만, Compose 에서는 View 가 해당 속성을 가지지 않는다.

그래서 Modifier 에 padding 은 있지만 margin 은 없다.

그러면 Compose 에서 margin 은 어떻게 구현할까?

 

#

사실 Compose 에서는 Android View 시스템에서 사용하던 box model 을 사용하지 않는다.

그래서 padding 이라는 말은 Android View 시스템의 padding 에 딱 맞지 않고, spacing (공간 주기)로만 이해하면 된다.

 

#

가장 간단한 방법은 "Spacer" 라는 composable 을 이용하는 것!

Text(text = "Hello!")
Spacer(modifier = Modifier.width(10.dp))
Image(painter = painterResource(id = R.drawable.icon), contentDescription = null)

 

#

두번째 방법은 padding 을 갖거나, spacedBy 로 offset 이 지정된 container composable 안에 margin 을 주고자 하는 composable 을 담는 것.

그러나 이는 꼭 필요한 경우가 아니면 추천하고 싶지 않은 방법.

Column(
    modifier = Modifier.padding(32.dp),
    verticalArrangement = Arrangement.spacedBy(8.dp),
){ ... }

 

#

Modifier.offset, Modifier.padding 을 이용할 수도 있다. 그러나 이는 배경 영역, click 영역등에 대한 이슈가 생길 수 있다.

위에서 설명한 것과 같이 compose 에서의 padding 은 space 개념이고, 호출 순서에 따라서 동작이 달라진다.

예를 들어 clickable 과 padding 의 함수 호출 순서에 따라 clickable 영역이 달라진다. 

이를 잘 이해하고 사용한다면, Spacer 보다 더 추천되는 방법일 수도 있겠다.

 

끝!

 

반응형

'프로그래밍 놀이터 > Compose' 카테고리의 다른 글

[android] Switch in Compose  (0) 2022.09.14
[android] EditText in Compose (TextField)  (0) 2022.09.13
[android] modifier in compose  (0) 2022.09.11
[android] Button in Compose  (0) 2022.09.10
[android] TextView in Compose (Text)  (0) 2022.09.09

댓글