O elemento combinável Text tem vários parâmetros opcionais para definir o estilo do conteúdo.
Abaixo, listamos os parâmetros que abrangem os casos de uso mais comuns relacionados a textos.
Para conferir todos os parâmetros de Text, consulte o código-fonte
do texto do Compose.
Sempre que você definir um desses parâmetros, o mesmo estilo será aplicado a todo o valor do texto. Caso seja necessário aplicar vários estilos na mesma linha ou parágrafos, consulte a seção sobre vários estilos inline styles.
Estilos de texto comuns
As seções a seguir descrevem maneiras comuns de definir o estilo do texto.
Mudar a cor do texto
@Composable fun BlueText() { Text("Hello World", color = Color.Blue) }
Mudar o tamanho do texto
@Composable fun BigText() { Text("Hello World", fontSize = 30.sp) }
Deixar o texto em itálico
Use o parâmetro fontStyle para aplicar itálico ao texto ou defina outro
FontStyle.
@Composable fun ItalicText() { Text("Hello World", fontStyle = FontStyle.Italic) }
Deixar o texto em negrito
Use o parâmetro fontWeight para aplicar negrito ao texto ou defina outro FontWeight.
@Composable fun BoldText() { Text("Hello World", fontWeight = FontWeight.Bold) }
Adicionar sombra
O parâmetro style permite definir um objeto do tipo TextStyle
e configurar vários parâmetros, como uma sombra.
Shadow recebe uma cor para a sombra, o deslocamento ou a localização em relação ao Text e ao raio de desfoque, que é a intensidade do efeito desfocado.
@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 ) ) ) }
Adicionar vários estilos no texto
Para definir estilos diferentes no mesmo Text
elemento combinável, use uma AnnotatedString,
uma string que pode receber anotações de estilo arbitrárias.
AnnotatedString é uma classe de dados que contém:
- Um valor
Text - Uma
ListdeSpanStyleRange, equivalente ao estilo inline com intervalo de posições dentro do valor de texto - Uma
ListdeParagraphStyleRange, especificando o alinhamento, a direção, a altura da linha e o estilo de recuo do texto.
TextStyle é usado
no elemento combinável Text, ao passo que SpanStyle
e ParagraphStyle
são usados na AnnotatedString. Para mais informações sobre vários estilos em
um parágrafo, consulte Adicionar vários estilos em um parágrafo.
AnnotatedString tem um builder de tipo seguro (em inglês) para facilitar a criação: 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") } ) }
Mostrar HTML com links no texto
Use AnnotatedString.fromHtml() para mostrar texto formatado em HTML com
links clicáveis no aplicativo Jetpack Compose. Essa função converte uma string com tags HTML em uma AnnotatedString, permitindo a definição de estilo e o processamento de links.
Exemplo: HTML com link estilizado
Esse snippet renderiza texto formatado em HTML com um link, aplicando um estilo específico ao link:
@Composable fun AnnotatedHtmlStringWithLink( modifier: Modifier = Modifier, htmlText: String = """ <h1>Jetpack Compose</h1> <p> Build <b>better apps</b> faster with <a href="https://www.android.com">Jetpack Compose</a> </p> """.trimIndent() ) { Text( AnnotatedString.fromHtml( htmlText, linkStyles = TextLinkStyles( style = SpanStyle( textDecoration = TextDecoration.Underline, fontStyle = FontStyle.Italic, color = Color.Blue ) ) ), modifier ) }
Pontos principais sobre o código
AnnotatedString.fromHtml()converte a stringhtmlTextem umAnnotatedString. O parâmetrolinkStylespersonaliza a aparência do link.TextLinkStylesdefine o estilo dos links no HTML.SpanStyledefine a decoração, o estilo da fonte e a cor do texto para os links.O
Textcombinável mostra aAnnotatedStringresultante.
Resultado
Esse snippet ativa o "Jetpack Compose" como um link clicável, estilizado com cor azul, sublinhado e em itálico:
Ativar estilo avançado com Brush
Para ativar um estilo de texto mais avançado, use a Brush API com
TextStyle e SpanStyle. Em qualquer lugar em que você normalmente usaria TextStyle ou SpanStyle, agora também é possível usar Brush.
Usar um pincel para definir o estilo do texto
Configure o texto usando um pincel integrado em TextStyle. Por exemplo, é possível configurar um linearGradient pincel para o texto da seguinte maneira:
val gradientColors = listOf(Cyan, LightBlue, Purple /*...*/) Text( text = text, style = TextStyle( brush = Brush.linearGradient( colors = gradientColors ) ) )
linearGradient da API Brush com uma lista definida de cores.Você não está limitado a esse esquema de cores ou estilo de coloração específico. Embora
tenhamos fornecido um exemplo simples para destacar, use qualquer um dos pincéis integrados
brushes ou até mesmo um SolidColor para melhorar o texto.
Integrações
Como é possível usar Brush com TextStyle e SpanStyle,
a integração com TextField e buildAnnotatedString é perfeita.
Para mais informações sobre como usar a API Brush em um TextField, consulte
Definir o estilo da entrada com a API Brush.
Estilo adicional usando SpanStyle
Aplicar um pincel a um intervalo de texto
Se você quiser aplicar um pincel apenas a partes do texto, use
buildAnnotatedString e a API SpanStyle, além do pincel
e do gradiente de sua preferência.
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.") } )
linearGradient como um estilo para Text.Opacidade em um intervalo de texto
Para ajustar a opacidade de um intervalo de texto específico, use SpanStyle's
parâmetro alpha opcional. Use o mesmo pincel para as duas partes de um texto e mude o parâmetro alfa no intervalo correspondente.
No exemplo de código, o primeiro intervalo de texto é mostrado com metade da opacidade (alpha =.5f), enquanto o segundo é mostrado com opacidade total (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 ❤️") } }
buildAnnotatedString e o parâmetro alfa de SpanStyle, além de linearGradient para adicionar opacidade a um intervalo de texto.Aplicar efeito de letreiro ao texto
É possível aplicar o modificador basicMarquee a qualquer elemento combinável para
produzir um efeito de rolagem animado. O efeito de letreiro ocorre se o conteúdo for muito largo para caber nas restrições disponíveis. Por padrão, basicMarquee tem determinadas configurações definidas (como velocidade e atraso inicial), mas é possível modificar esses parâmetros para personalizar o efeito.
O snippet a seguir implementa um efeito de letreiro básico em um elemento combinável 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 ) } }
Figura 6. O modificador basicMarquee aplicado ao texto.
Outros recursos
- Brushing Up on Compose Text Coloring (link em inglês)
- Animar a coloração de texto com pincéis no Compose (link em inglês)
- Oferecer suporte a vários links em uma única string de texto
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Definir o estilo do parágrafo
- Material Design 2 no Compose
- Modificadores gráficos