Paragrafı biçimlendir

Bu sayfada, paragrafınız için metin stilini nasıl ayarlayacağınız açıklanmaktadır. Paragraf düzeyinde stil ayarlamak için textAlign ve lineHeight gibi parametreleri yapılandırabilir veya kendi ParagraphStyle parametresini tanımlayabilirsiniz.

Metin hizalamasını ayarlama

textAlign parametresi, Text composable yüzey alanı içinde metnin yatay hizalamasını ayarlamanıza olanak tanır.

Varsayılan olarak Text, içerik değerine bağlı olarak doğal metin hizalamasını seçer:

  • Latin, Kiril veya Hangul gibi soldan sağa alfabeler için Text kapsayıcısının sol kenarı
  • Arapça veya İbranice gibi sağdan sola yazılan alfabeler için Text kapsayıcısının sağ kenarı

@Composable
fun CenterText() {
    Text(
        "Hello World", textAlign = TextAlign.Center, modifier = Modifier.width(150.dp)
    )
}

Kelimeler

Bir Text composable'ın metin hizalamasını manuel olarak ayarlamak isterseniz tercih edilen dil metin yönüne bağlı olarak Text composable'ın sağ kenarına çözümlendiği için TextAlign.Left ve TextAlign.Right yerine sırasıyla TextAlign.Start ve TextAlign.End kullanmayı tercih edin. Örneğin, TextAlign.End, Fransızca metin için sağ tarafa, Arapça metin için sol tarafa hizalanırken TextAlign.Right, hangi alfabede kullanılırsa kullanılsın sağ tarafa hizalanır.

Paragrafa birden çok stil ekleme

Bir paragrafa birden çok stil eklemek için AnnotatedString içinde ParagraphStyle kullanabilirsiniz. Bu stile isteğe bağlı ek açıklama stilleriyle ek açıklama eklenebilir. Metninizin bir bölümü ParagraphStyle ile işaretlendiğinde, bu kısım, başında ve sonunda satır feed'leri varmış gibi kalan metinden ayrılır.

Bir metne birden çok stil ekleme hakkında daha fazla bilgi edinmek için Metine birden çok stil ekleme bölümüne bakın.

AnnotatedString, oluşturmayı kolaylaştıran bir type-safe oluşturucu içerir: buildAnnotatedString. Aşağıdaki snippet, ParagraphStyle değerini ayarlamak için buildAnnotatedString değerini kullanır:

@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")
            }
        }
    )
}

Üç farklı stilde üç paragraf: Mavi, kırmızı ve kalın ve düz siyah

Satır yüksekliğini ve dolguyu ayarlama

includeFontPadding, metnin ilk satırının üst kısmındaki ve son satırının altındaki yazı tipi metriklerine göre fazladan dolgu ekleyen eski bir özelliktir. BOM oluşturma 2024.01.01 sürümünden itibaren includeFontPadding varsayılan olarak false değerine ayarlıdır. Bu sayede, varsayılan metin düzeni yaygın tasarım araçlarıyla daha uyumlu hâle gelir.

lineHeight'i yapılandırma özelliği yeni bir özellik değil. Android Q'dan bu yana kullanımdaydı. Her metin satırındaki satır yüksekliğini dağıtan lineHeight parametresini kullanarak Text için lineHeight yapılandırabilirsiniz. Ardından, bu metnin alan içinde nasıl hizalanacağını daha ayrıntılı şekilde yapılandırmak ve boşlukları kaldırmak için yeni LineHeightStyle API kullanabilirsiniz.

Daha fazla hassasiyet için lineHeight ayarını, "sp" (ölçeklendirilmiş piksel) yerine "em" (göreli yazı tipi boyutu) kullanarak yapmak isteyebilirsiniz. Uygun bir metin birimi seçme hakkında daha fazla bilgi için TextUnit bölümüne bakın.

Doğrudan üzerindeki ve altındaki çizgiler temel alınarak bir ölçüm olarak lineHeight özelliğini gösteren resim.
Şekil 1. Metni küme lineHeight içinde ayarlamak için Hizalama ve Kırpma seçeneklerini kullanın ve gerekirse fazladan boşluk ekleyin.

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
            )
        )
    )
)

lineHeight ayarlamasına ek olarak, artık LineHeightStyle deneysel API'sı ile yapılandırmaları kullanarak metni ortalayabilir ve biçimlendirebilirsiniz: LineHeightStyle.Alignment ve LineHeightStyle.Trim (Kırpma özelliğinin çalışması için includeFontPadding, false olarak ayarlanmalıdır). Hizalama ve Kırpma, metni tüm satırlara daha uygun bir şekilde dağıtmak için metin satırları arasındaki ölçülen boşluğu kullanır. Bu boşluk, tek bir metin satırı ve bir metin bloğunun üst satırı da dahildir.

LineHeightStyle.Alignment, satır yüksekliğinin sağladığı alanda çizginin nasıl hizalanacağını tanımlar. Her satırda metni üste, alta, ortaya veya orantılı olarak hizalayabilirsiniz. LineHeightStyle.Trim daha sonra, tüm lineHeight ve Hizalama ayarlamalarından oluşturulan, metninizin ilk satırının üst ve son satırının altındaki fazladan boşlukları bırakmanıza veya kaldırmanıza olanak tanır. Aşağıdaki örneklerde, hizalama ortalandığında (LineHeightStyle.Alignment.Center) çeşitli LineHeightStyle.Trim yapılandırmalarında çok satırlı metnin nasıl göründüğü gösterilmektedir.

LineHeightStyle.Trim.None'i gösteren bir resim LineHeightStyle.Trim.Both'u gösteren resim
LineHeightStyle.Trim.None LineHeightStyle.Trim.Both
LineHeightStyle.Trim.FirstLineTop'ı gösteren bir resim LineHeightStyle.Trim.LastLineBottom'ı gösteren resim
LineHeightStyle.Trim.FirstLineTop LineHeightStyle.Trim.LastLineBottom

Bu değişikliğin bağlamı, includeFontPadding öğesinin View sisteminde nasıl çalıştığı ve Compose ile yeni LineHeightStyle API'lerde yapılan değişiklikler hakkında daha fazla bilgi edinmek için Metni Oluşturulan Metinde Yazı Tipi Doldurmayı Düzeltme blog yayınına bakın.