Stiltext

Die zusammensetzbare Funktion Text hat mehrere optionale Parameter, mit denen sich der Inhalt gestalten lässt. Unten finden Sie Parameter, die die häufigsten Anwendungsfälle mit Text abdecken. Alle Parameter von Text finden Sie im Quellcode für „Text verfassen“.

Wenn Sie einen dieser Parameter festlegen, wird der Stil auf den gesamten Textwert angewendet. Wenn Sie mehrere Formatierungen in derselben Zeile oder in denselben Absätzen anwenden müssen, lesen Sie den Abschnitt Mehrere Inline-Formatierungen.

Häufig verwendete Textformatierungen

In den folgenden Abschnitten werden gängige Möglichkeiten zum Formatieren von Text beschrieben.

Textfarbe ändern

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

Der Text

Textgröße ändern

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

Der Text

Text kursiv formatieren

Mit dem Parameter fontStyle können Sie Text kursiv formatieren oder eine andere FontStyle festlegen.

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

Der Text

Text fett formatieren

Mit dem Parameter fontWeight können Sie Text fett formatieren oder eine andere FontWeight festlegen.

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

Der Text

Schatten hinzufügen

Mit dem Parameter style können Sie ein Objekt vom Typ TextStyle festlegen und mehrere Parameter konfigurieren, z. B. Schatten. Shadow erhält eine Farbe für den Schatten, den Versatz oder die Position in Bezug auf Text sowie den Unschärferadius, der angibt, wie verschwommen der Schatten aussieht.

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

Der Text

Mehrere Formatierungen in Text einfügen

Wenn Sie in derselben Text-Composable verschiedene Stile festlegen möchten, verwenden Sie ein AnnotatedString>, einen String, der mit Stilen beliebiger Annotationen annotiert werden kann.

AnnotatedString ist eine Datenklasse, die Folgendes enthält:

  • Einen Text-Wert
  • Ein List von SpanStyleRange, entsprechend dem Inline-Styling mit dem Positionsbereich innerhalb des Textwerts
  • Ein List von ParagraphStyleRange, das die Textausrichtung, die Textrichtung, die Zeilenhöhe und die Formatierung für den Texteinzug angibt.

TextStyle wird im zusammensetzbaren Text verwendet, während SpanStyle und ParagraphStyle in AnnotatedString verwendet werden. Weitere Informationen zu mehreren Formatierungen in einem Absatz finden Sie unter Mehrere Formatierungen in einem Absatz hinzufügen.

AnnotatedString hat einen typsicheren Builder, um die Erstellung von buildAnnotatedString zu vereinfachen.

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

Der Text

Mit AnnotatedString.fromHtml() können Sie HTML-formatierten Text mit anklickbaren Links in Ihrer Jetpack Compose-Anwendung anzeigen. Diese Funktion konvertiert einen String mit HTML-Tags in ein AnnotatedString, das Formatierung und Linkverarbeitung ermöglicht.

Beispiel: HTML mit formatiertem Link

Mit diesem Snippet wird HTML-formatierter Text mit einem Link gerendert, wobei dem Link ein bestimmtes Styling zugewiesen wird:

Wichtige Punkte zum Code
  • Mit AnnotatedString.fromHtml() wird der String htmlText in ein AnnotatedString konvertiert. Mit dem Parameter linkStyles lässt sich die Darstellung von Links anpassen.

  • TextLinkStyles definiert den Stil für Links im HTML-Code. Mit SpanStyle werden die Textformatierung, der Schriftstil und die Farbe für die Links festgelegt.

  • Die zusammensetzbare Funktion Text zeigt die resultierende AnnotatedString an.

Ergebnis

Mit diesem Snippet wird „Jetpack Compose“ als klickbarer Link mit blauer Farbe, unterstrichen und kursiv dargestellt:

Eine H1-Überschrift „Jetpack Compose“ gefolgt von „Build better apps with Jetpack Compose“ (Bessere Apps mit Jetpack Compose entwickeln), wobei „Jetpack Compose“ ein klickbarer Link ist, der blau, unterstrichen und kursiv formatiert ist.
Abbildung 2. Eine Überschrift und ein Absatz, in dem „Jetpack Compose“ im Absatz ein klickbarer, formatierter Link ist.

Erweitertes Styling mit Brush aktivieren

Wenn Sie erweiterte Textformatierungen aktivieren möchten, können Sie die Brush API mit TextStyle und SpanStyle verwenden. An allen Stellen, an denen Sie normalerweise TextStyle oder SpanStyle verwenden würden, können Sie jetzt auch Brush verwenden.

Pinsel zum Formatieren von Text verwenden

Konfigurieren Sie den Text mit einem integrierten Pinsel in TextStyle. Sie können beispielsweise einen linearGradient-Pinsel für Ihren Text so konfigurieren:

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

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

Verwenden der Funktion „linearGradient“ der Brush API mit einer definierten Liste von Farben.
Abbildung 3: Verwendung der linearGradient-Funktion der Brush API mit einer definierten Liste von Farben.

Sie sind nicht auf dieses spezielle Farbschema oder diesen Stil beschränkt. Wir haben ein einfaches Beispiel zur Hervorhebung bereitgestellt. Sie können aber auch einen der integrierten Pinsel oder einfach nur SolidColor verwenden, um Ihren Text zu optimieren.

Integrationen

Da Sie Brush sowohl mit TextStyle als auch mit SpanStyle verwenden können, ist die Integration mit TextField und buildAnnotatedString nahtlos.

Weitere Informationen zur Verwendung der Brush API in einem TextField finden Sie unter Eingabe mit der Brush API gestalten.

Zusätzliches Styling mit SpanStyle

Pinsel auf einen Textbereich anwenden

Wenn Sie einen Pinsel nur auf Teile Ihres Texts anwenden möchten, verwenden Sie buildAnnotatedString und die SpanStyle API zusammen mit dem gewünschten Pinsel und Farbverlauf.

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

Verwendung eines Standardpinsels mit „linearGradient“ als Stil für Text.
Abbildung 4: Verwendung eines Standardpinsels mit linearGradient als Stil für Text.
Deckkraft in einem Textbereich

Wenn Sie die Deckkraft eines bestimmten Textbereichs anpassen möchten, verwenden Sie den optionalen Parameter alpha von SpanStyle. Verwenden Sie für beide Teile eines Texts denselben Pinsel und ändern Sie den Alpha-Parameter im entsprechenden Bereich. Im Codebeispiel wird der erste Textbereich mit halber Deckkraft (alpha =.5f) und der zweite mit voller Deckkraft (alpha = 1f) angezeigt.

val brush = Brush.linearGradient(colors = rainbowColors)

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

Mit buildAnnotatedString und dem Alphaparameter von SpanStyle sowie mit linearGradient können Sie einem Textbereich Transparenz hinzufügen.
Abbildung 5. Mit dem Alphaparameter von buildAnnotatedString und SpanStyle sowie linearGradient können Sie einem Textbereich Transparenz hinzufügen.

Laufschrift-Effekt auf Text anwenden

Sie können den Modifier basicMarquee auf jedes Composable anwenden, um einen animierten Scrolling-Effekt zu erzielen. Der Laufschrifteffekt tritt auf, wenn der Inhalt zu breit ist, um in die verfügbaren Einschränkungen zu passen. Standardmäßig sind für basicMarquee bestimmte Konfigurationen (z. B. Geschwindigkeit und anfängliche Verzögerung) festgelegt. Sie können diese Parameter jedoch ändern, um den Effekt anzupassen.

Im folgenden Snippet wird ein einfacher Markise-Effekt für eine Text-Composable-Funktion implementiert:

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

Abbildung 6 Der basicMarquee-Modifikator, der auf Text angewendet wird.

Zusätzliche Ressourcen