Teks gaya

Composable Text memiliki beberapa parameter opsional untuk mengatur gaya kontennya. Di bawah ini, kami telah mencantumkan parameter yang mencakup kasus penggunaan paling umum dengan teks. Untuk semua parameter Text, lihat kode sumber Teks Compose.

Setiap kali Anda menetapkan salah satu parameter ini, Anda menerapkan gaya ke seluruh nilai teks. Jika Anda perlu menerapkan beberapa gaya dalam baris atau paragraf yang sama, lihat bagian beberapa gaya inline.

Gaya teks umum

Bagian berikut menjelaskan cara umum untuk menata gaya teks Anda.

Ubah warna teks

@Composable
fun BlueText() {
    Text("Hello World", color = Color.Blue)
}

Kata-kata

Ubah ukuran teks

@Composable
fun BigText() {
    Text("Hello World", fontSize = 30.sp)
}

Kata-kata

Memiringkan teks

Gunakan parameter fontStyle untuk memiringkan teks (atau menyetel FontStyle lain).

@Composable
fun ItalicText() {
    Text("Hello World", fontStyle = FontStyle.Italic)
}

Kata-kata

Menebalkan teks

Gunakan parameter fontWeight untuk menebalkan teks (atau menyetel FontWeight lain).

@Composable
fun BoldText() {
    Text("Hello World", fontWeight = FontWeight.Bold)
}

Kata-kata

Tambahkan bayangan

Parameter style memungkinkan Anda menyetel objek jenis TextStyle dan mengonfigurasi beberapa parameter, misalnya bayangan. Shadow menerima warna untuk bayangan, offset, atau lokasinya dalam kaitannya dengan Text dan radius blur, yaitu seberapa blur tampilannya.

@Composable
fun TextShadow() {
    val offset = Offset(5.0f, 10.0f)
    Text(
        text = "Hello world!",
        style = TextStyle(
            fontSize = 24.sp,
            shadow = Shadow(
                color = Color.Blue, offset = offset, blurRadius = 3f
            )
        )
    )
}

Kata-kata

Menambahkan beberapa gaya dalam teks

Untuk menyetel gaya berbeda dalam composable Text yang sama, gunakan AnnotatedString, string yang dapat dianotasi dengan gaya anotasi arbitrer.

AnnotatedString adalah class data yang berisi:

  • Nilai Text
  • List dari SpanStyleRange, setara dengan gaya inline dengan rentang posisi dalam nilai teks
  • List dari ParagraphStyleRange, yang menentukan perataan teks, arah teks, tinggi baris, dan gaya indentasi teks

TextStyle digunakan untuk composable Text, sedangkan SpanStyle dan ParagraphStyle digunakan untuk AnnotatedString. Untuk mengetahui informasi selengkapnya tentang beberapa gaya dalam sebuah paragraf, lihat Menambahkan beberapa gaya dalam sebuah paragraf.

AnnotatedString memiliki builder yang aman agar lebih mudah dibuat: buildAnnotatedString.

@Composable
fun MultipleStylesInText() {
    Text(
        buildAnnotatedString {
            withStyle(style = SpanStyle(color = Color.Blue)) {
                append("H")
            }
            append("ello ")

            withStyle(style = SpanStyle(fontWeight = FontWeight.Bold, color = Color.Red)) {
                append("W")
            }
            append("orld")
        }
    )
}

Kata-kata

Gunakan AnnotatedString.fromHtml() untuk menampilkan teks berformat HTML dengan link yang dapat diklik di aplikasi Jetpack Compose Anda. Fungsi ini mengonversi string dengan tag HTML menjadi AnnotatedString, sehingga memungkinkan penataan gaya dan penanganan link.

Contoh: HTML dengan link bergaya

Cuplikan ini merender teks berformat HTML dengan link, yang menerapkan gaya tertentu ke link:

Poin penting tentang kode
  • AnnotatedString.fromHtml() mengonversi string htmlText menjadi AnnotatedString. Parameter linkStyles menyesuaikan tampilan link.

  • TextLinkStyles menentukan gaya untuk link dalam HTML. SpanStyle menetapkan dekorasi teks, gaya font, dan warna untuk link.

  • Composable Text menampilkan AnnotatedString yang dihasilkan.

Hasil

Cuplikan ini mengaktifkan "Jetpack Compose" sebagai link yang dapat diklik, diberi gaya dengan warna biru, digarisbawahi, dan dicetak miring:

Judul H1 'Jetpack Compose' diikuti dengan 'Build better apps with Jetpack
    Compose', dengan Jetpack Compose adalah link yang dapat diklik dan diberi gaya dengan warna biru,
    garis bawah, dan miring.
Gambar 2. Judul dan paragraf, dengan 'Jetpack Compose' di paragraf adalah link bergaya yang dapat diklik.

Mengaktifkan gaya visual lanjutan dengan Brush

Untuk mengaktifkan gaya teks yang lebih canggih, Anda dapat menggunakan Brush API dengan TextStyle dan SpanStyle. Di tempat mana pun Anda biasanya menggunakan TextStyle atau SpanStyle, kini Anda juga dapat menggunakan Brush.

Menggunakan kuas untuk penataan gaya teks

Konfigurasikan teks Anda menggunakan kuas bawaan dalam TextStyle. Misalnya, Anda dapat mengonfigurasi kuas linearGradient ke teks sebagai berikut:

val gradientColors = listOf(Cyan, LightBlue, Purple /*...*/)

Text(
    text = text,
    style = TextStyle(
        brush = Brush.linearGradient(
            colors = gradientColors
        )
    )
)

Menggunakan fungsi `linearGradient` Brush API dengan daftar warna yang ditentukan.
Gambar 3. Menggunakan fungsi linearGradient Brush API dengan daftar warna yang ditentukan.

Anda tidak terbatas pada skema warna atau gaya pewarnaan tertentu ini. Meskipun kami telah memberikan contoh sederhana untuk disoroti, gunakan salah satu kuas bawaan atau bahkan hanya SolidColor untuk menyempurnakan teks Anda.

Integrasi

Karena Anda dapat menggunakan Brush bersama TextStyle dan SpanStyle, integrasi dengan TextField dan buildAnnotatedString akan berjalan lancar.

Untuk mengetahui informasi selengkapnya tentang penggunaan API kuas dalam TextField, lihat Menata gaya input dengan Brush API.

Penataan gaya tambahan menggunakan SpanStyle

Menerapkan kuas ke rentang teks

Jika Anda hanya ingin menerapkan kuas ke bagian teks, gunakan buildAnnotatedString dan API SpanStyle, bersama dengan kuas dan gradien pilihan Anda.

Text(
    text = buildAnnotatedString {
        append("Do not allow people to dim your shine\n")
        withStyle(
            SpanStyle(
                brush = Brush.linearGradient(
                    colors = rainbowColors
                )
            )
        ) {
            append("because they are blinded.")
        }
        append("\nTell them to put some sunglasses on.")
    }
)

Menggunakan kuas default dengan linearGradient sebagai gaya untuk Teks.
Gambar 4. Menggunakan kuas default dengan linearGradient sebagai gaya untuk Text.
Opasitas dalam rentang teks

Untuk menyesuaikan opasitas rentang teks tertentu, gunakan parameter alpha opsional SpanStyle. Gunakan kuas yang sama untuk kedua bagian teks, dan ubah parameter alfa dalam span yang sesuai. Dalam contoh kode, rentang teks pertama ditampilkan dengan opasitas setengah (alpha =.5f) sedangkan rentang kedua ditampilkan dengan opasitas penuh (alpha = 1f).

val brush = Brush.linearGradient(colors = rainbowColors)

buildAnnotatedString {
    withStyle(
        SpanStyle(
            brush = brush, alpha = .5f
        )
    ) {
        append("Text in ")
    }
    withStyle(
        SpanStyle(
            brush = brush, alpha = 1f
        )
    ) {
        append("Compose ❤️")
    }
}

Menggunakan parameter alfa buildAnnotatedString dan SpanStyle, bersama dengan linearGradient untuk menambahkan opasitas ke rentang teks.
Gambar 5. Menggunakan parameter alfa buildAnnotatedString dan SpanStyle, bersama dengan linearGradient untuk menambahkan opasitas ke rentang teks.

Menerapkan efek teks berjalan ke teks

Anda dapat menerapkan pengubah basicMarquee ke composable mana pun untuk menghasilkan efek scroll animasi. Efek marquee terjadi jika konten terlalu lebar untuk muat dalam batasan yang tersedia. Secara default, basicMarquee memiliki konfigurasi tertentu (seperti kecepatan dan penundaan awal) yang ditetapkan, tetapi Anda dapat mengubah parameter ini untuk menyesuaikan efeknya.

Cuplikan berikut menerapkan efek teks berjalan dasar pada composable Text:

@Composable
fun BasicMarqueeSample() {
    // Marquee only animates when the content doesn't fit in the max width.
    Column(Modifier.width(400.dp)) {
        Text(
            "Learn about why it's great to use Jetpack Compose",
            modifier = Modifier.basicMarquee(),
            fontSize = 50.sp
        )
    }
}

Gambar 6. Pengubah basicMarquee yang diterapkan ke teks.

Referensi lainnya