본문 바로가기
Develop/Android

[Android] LineBreak 속성 알아보기

by bona.com 2024. 11. 8.

Jetpack Compose의 Text에 있는 LineBreak 속성에 대해 알아보자!

 

Text(
    text = "터닝에서 내 계획에 딱 맞는 대학생 인턴 찾기를 도와드릴게요",
    style = TerningTheme.typography.title1,
    modifier = Modifier
        .padding(bottom = 36.dp)
        .background(Color.LightGray),
)

 

위처럼 작성 시 나오는 기본 화면은 아래와 같다.

 

기본적으로 텍스트가 한 글자씩 잘려 줄바꿈 되는 것을 볼 수 있다.

 

하지만 나는 내가 원하는대로 개행을 하고 싶었고, 이를 위해 Text의 속성 중 하나인 LineBreak에 대해 알아보았다.

LineBreak와 관련된 공식문서도 같이 첨부하겠다.

https://developer.android.com/reference/kotlin/androidx/compose/ui/text/style/LineBreak

 

LineBreak  |  Android Developers

androidx.appsearch.builtintypes.properties

developer.android.com

 

공식문서에서도 알 수 있듯이 LineBreak는 기본적인 3가지 설정을 제공한다.

Simple, Heading, Paragraph

 

공식문서에 따르면

1️⃣Simple은 기본적인 줄바꿈을 제공한다. Simple의 속성을 뜯어보면 다 기본으로 이루어진 것을 볼 수 있다.

(각각의 속성에 대한 자세한 설명은 공식문서에서 확인 가능하다)

actual val Simple: LineBreak = LineBreak(
            packBytes(
                Strategy.Simple.value,
                Strictness.Normal.value,
                WordBreak.Default.value
            )
        )

 

2️⃣Heading제목이나 신문 칼럼과 같은 짧은 텍스트에 적합한 느슨한 규칙을 제공한다.

실제로 속성을 보면,  Balanced를 사용해 균형잡힌 개행 전략을 사용하고, Loose를 통해 개행을 비교적 자유롭게 하며, Phrase를 통해 단어가 잘리지 않고 완전한 구문 단위에서 줄바꿈이 발생하게 한다. 

actual val Heading: LineBreak = LineBreak(
    packBytes(
        Strategy.Balanced.value,
        Strictness.Loose.value,
        WordBreak.Phrase.value
    )
)

 

그래서 처음에 보았던 예시에 Heading 설정을 넣으면 아래 그림처럼 완전한 구문을 읽고 개행되는 것을 볼 수 있다.

style = TerningTheme.typography.title1.copy(
    lineBreak = LineBreak.Heading
)

 

3️⃣마지막으로 Paragraph은 가독성을 향상시키기 위해 고품질의 줄바꿈 규칙으로 문단 단위로 텍스트를 개행한다. 보다 많은 양의 텍스트에 적합하다고 한다.

actual val Paragraph: LineBreak = LineBreak(
    packBytes(
        Strategy.HighQuality.value,
        Strictness.Strict.value,
        WordBreak.Default.value
    )
)