This page describes how you can style text for your
paragraph. To set paragraph-level styling, you can configure parameters like
textAlign
and lineHeight
or define your own ParagraphStyle
.
Set text alignment
The textAlign
parameter lets you set the horizontal
alignment of the
text within a Text
composable surface area.
By default, Text
will select the natural text alignment depending on its
content value:
- Left edge of the
Text
container for left-to-right alphabets such as Latin, Cyrillic, or Hangul - Right edge of the
Text
container for right-to-left alphabets such as Arabic or Hebrew
@Composable fun CenterText() { Text( "Hello World", textAlign = TextAlign.Center, modifier = Modifier.width(150.dp) ) }
If you want to manually set the text alignment of a Text
composable, prefer
using TextAlign.Start
and TextAlign.End
instead of TextAlign.Left
and
TextAlign.Right
respectively, as they resolve to the right edge of the Text
composable depending on the preferred language text orientation. For example,
TextAlign.End
aligns to the right side for French text and to the left side
for Arabic text, but TextAlign.Right
aligns to the right side no matter what
alphabet is used.
Add multiple styles in a paragraph
To add multiple styles in a paragraph, you can use ParagraphStyle
in an
AnnotatedString
, which can be annotated with styles of arbitrary annotations.
Once a portion of your text is marked with a ParagraphStyle
, that portion is
separated from the remaining text as if it had line feeds at the beginning and
end.
For more information about adding multiple styles in a text, see Add multiple styles in text.
AnnotatedString
has a type-safe
builder
to make it easier to create: buildAnnotatedString
. The following snippet uses
buildAnnotatedString
to set ParagraphStyle
:
@Composable fun ParagraphStyle() { Text( buildAnnotatedString { withStyle(style = ParagraphStyle(lineHeight = 30.sp)) { withStyle(style = SpanStyle(color = Color.Blue)) { append("Hello\n") } withStyle( style = SpanStyle( fontWeight = FontWeight.Bold, color = Color.Red ) ) { append("World\n") } append("Compose") } } ) }
Adjust line height and padding
includeFontPadding
is a legacy property that adds extra padding based on
font metrics at the top of the first line and bottom of the last line of a text.
In Compose 1.2.0, includeFontPadding
is set to true by default.
We now recommend setting includeFontPadding
to false (which will remove the
extra padding) using the deprecated API PlatformTextStyle
from
Compose 1.2.0, and adjust your text further.
The ability to configure lineHeight
is not new– it has been available
since Android Q. You can configure lineHeight
for Text
using the
lineHeight
parameter, which distributes the line height in each line of
text. You can then use the new LineHeightStyle API
to further configure
how this text is aligned within the space, and remove whitespace.
You may want to adjust lineHeight
using the text unit “em” (relative font
size) instead of “sp” (scaled pixels) for improved precision. For more information about
selecting an appropriate text unit, see TextUnit
.

lineHeight
, and trim extra space if needed.
Text( text = text, style = LocalTextStyle.current.merge( TextStyle( lineHeight = 2.5.em, platformStyle = PlatformTextStyle( includeFontPadding = false ), lineHeightStyle = LineHeightStyle( alignment = LineHeightStyle.Alignment.Center, trim = LineHeightStyle.Trim.None ) ) ) )
In addition to adjusting lineHeight
, you can now further center and style text
using configurations with the LineHeightStyle
experimental API: LineHeightStyle.Alignment
and LineHeightStyle.Trim
(includeFontPadding
must be set to false for
Trim to work). Alignment and Trim use the measured space in between lines of
text to more appropriately distribute it to all lines– including a single line
of text and the top line of a block of text.
LineHeightStyle.Alignment
defines how to align the line in the space
provided by the line height. Within each line, you can align the text to the
top, bottom, center, or proportionally. LineHeightStyle.Trim
then allows you
to leave or remove the extra space to the top of the first line and bottom of
the last line of your text, generated from any lineHeight
and Alignment
adjustments. The following samples show how multi-line text looks with
various LineHeightStyle.Trim
configurations when alignment is centered
(LineHeightStyle.Alignment.Center
).
![]() |
![]() |
LineHeightStyle.Trim.None |
LineHeightStyle.Trim.Both |
![]() |
![]() |
LineHeightStyle.Trim.FirstLineTop |
LineHeightStyle.Trim.LastLineBottom |
See the Fixing Font Padding in Compose Text blog post to learn
more about the context of this change, how includeFontPadding
worked in the View
system, and the changes made for Compose and the new LineHeightStyle
APIs.
Recommended for you
- Note: link text is displayed when JavaScript is off
- Style text
- Compose layout basics
- Intrinsic measurements in Compose layouts