Composable function에 기본 Modifier를 제공하면 재사용성이 높아진다.
fun testComposableFun(modifier: Modifier = Modifier)
public fun Modifier.safeDrawingPadding(): Modifier
드로잉 영역을 안전하게 설정하는 데 도움을 주는 Modifier
이 함수를 사용하면 시스템 UI(상태 표시줄, 내비게이션 바 등)와 겹치지 않는 안전한 드로잉 영역을 설정할 수 있다
앱의 주요 콘텐츠가 시스템 UI와 겹치지 않도록 안전한 패딩을 설정하는 데 사용
이 함수를 사용하면 앱의 레이아웃에서 드로잉 영역을 지정할 수 있으며, 예를 들어 상태 표시줄과 내비게이션 바와 겹치지 않는 패딩을 설정할 수 있다
이는 시스템 UI의 크기나 형태에 따라 앱의 UI 요소가 적절히 배치되도록 보장할 수 있다
@Stable
public fun Modifier.consumeWindowInsets(
paddingValues: PaddingValues
): Modifier
Compose에서 UI 요소들이 시스템 UI와 겹치지 않도록 레이아웃을 조정하는 데 매우 유용한 도구
Compose에서 윈도우 인셋을 소비하고 해당 인셋 값을 적용하여 레이아웃을 조정하는 데 사용
PaddingValues 객체를 매개변수로 받아서 적용할 패딩 값을 지정
📌 소비한다?
인셋을 소비한다는 것은 해당 인셋 값을 처리하고, 나머지 레이아웃 요소들이 그 인셋을 다시 사용하지 않도록 하는 것
주요 포인트
consumeWindowInsets 함수는 주로 시스템 UI와 콘텐츠 간의 간격을 조정하기 위해 사용
이 함수는 지정된 PaddingValues를 적용하여 레이아웃을 조정하고, 인셋을 소비
이를 통해 중복된 인셋 적용을 방지하고, 레이아웃을 보다 세밀하게 제어할 수 있다
활용 시나리오
상태 바, 내비게이션 바와 겹치지 않도록 컴포저블의 위치를 조정할 때
다양한 화면 크기와 형태에 따라 적절한 패딩 값을 적용하여 UI를 구성할 때
시스템 인셋을 고려하여 레이아웃을 구성하는 상황에서 활용될 수 있다
@Stable
public fun Modifier.windowInsetsPadding(
insets: WindowInsets
): Modifier
Compose에서 윈도우 인셋을 고려하여 패딩을 적용하는 데 사용
윈도우 인셋(Window Insets):
윈도우 인셋은 시스템 UI(상태 바, 내비게이션 바 등)와 콘텐츠 사이의 간격을 나타낸다
이를 통해 시스템 UI와 겹치지 않도록 콘텐츠의 위치를 조정할 수 있다
📌 WindowInsets:
WindowInsets 객체는 각 방향(상단, 하단, 좌측, 우측)의 인셋 값을 포함
이 객체는 시스템 UI와 콘텐츠 사이의 간격을 나타내는 데 사용
public fun Modifier.semantics(
mergeDescendants: Boolean = false,
properties: SemanticsPropertyReceiver.() -> Unit
): Modifier
mergeDescendants (Boolean)
기본값: false
이 매개변수가 true로 설정되면, 해당 컴포넌트의 모든 자식 요소들의 접근성 속성을 하나의 요소로 병합
properties (SemanticsPropertyReceiver.() -> Unit)
람다 함수 형태로, 이 안에서 접근성 속성을 정의
SemanticsPropertyReceiver를 확장하여 다양한 접근성 속성을 설정할 수 있다
testTagsAsResourceId의 역할
테스트 태그
리소스 ID
testTagsAsResourceId 설정: 이 속성을 true로 설정하면, 테스트 태그가 리소스 ID로 사용됩니다. 이를 통해 UI 테스트에서 접근성 도구가 요소를 더 쉽게 식별할 수 있게 됩니다.
@Stable
public fun Modifier.width(
width: Dp
): Modifier
너비(높이) 설정
@Stable
public fun Modifier.fillMaxWidth(
fraction: Float = 1.0f
): Modifier
최대 너비(높이)로 설정
fraction : 0.0 ~ 1.0로 부모 컨테이너의 가로(세로) 너비에 대해 차지하는 비율을 설정할 수 있다.
@Stable
public fun Modifier.wrapContentWidth(
align: Alignment.Horizontal,
unbounded: Boolean = true
): Modifier
📌 fillMaxSize() 우선 적용
@Stable
public fun Modifier.heightIn(
min: Dp,
max: Dp
): Modifier
align(alignment: Alignment.Horizontal)
public fun Modifier.verticalScroll(
state: ScrollState,
enabled: Boolean,
flingBehavior: FlingBehavior? = null,
reverseScrolling: Boolean = false
): Modifier
스크롤을 적용하기 위한 Modifier.
이 함수를 사용하면 스크롤 가능한 Composable을 생성할 수 있다.
📌 스크롤의 현재 상태를 포함하여 외부에서 스크롤 상태를 수정하는 데 사용되는 ScrollState가 필요하며, 스크롤 상태를 수정할 필요가 없는 경우에는 rememberScrollState
를 사용하여 ScrollState 인스턴스를 만들면 된다.
@Stable
public fun Modifier.paddingFromBaseline(
top: Dp,
bottom: Dp
): Modifier
Text
컴포저블 사용할 때 유용하다
baseline을 기준으로 상단 및 하단 여백을 설정하는 데 사용
@Stable
public fun Modifier.size(
width: Dp,
height: Dp
): Modifier
요소의 크기를 명시적으로 지정할 수 있다.
@Stable
public fun Modifier.padding(
all: Dp
): Modifier
아래와 같이 오버로드 되어 있다.
padding(all: Dp)
padding(horizontal: Dp, vertical: Dp)
padding(start: Dp, top: Dp, end: Dp, bottom: Dp)
@Stable
public fun Modifier.clip(
shape: Shape
): Modifier
Modifier가 적용된 컴포저블의 모양을 지정된 Shape로 잘라내는 역할한다.
Shape는 모양을 정의하는 인터페이스로서, 주로 CircleShape, RoundedCornerShape 등이 사용된다.
public fun Modifier.border(
width: Dp,
brush: Brush,
shape: Shape
): Modifier
UI 요소에 테두리를 추가하기 위해 사용
📌 Brush는 색상 그라데이션, 이미지 패턴 등을 지정할 수 있는 브러시 타입입니다.
public fun Modifier.clickable(
enabled: Boolean,
onClickLabel: String? = null,
role: Role?,
onClick: () -> Unit
): Modifier
클릭 가능한 영역을 정의하는 데 사용되는 함수.