El elemento componible Text
tiene varios parámetros opcionales para aplicarle estilo a su contenido.
A continuación, incluimos algunos parámetros que abarcan los casos de uso más comunes con texto.
Para ver todos los parámetros de Text
, consulta el código fuente de texto de Compose.
Cada vez que configuras uno de estos parámetros, aplicas el estilo a todo el valor de texto. Si necesitas aplicar varios diseños en la misma línea o párrafos, consulta la sección sobre varios diseños intercalados.
Estilos de texto comunes
En las siguientes secciones, se describen las formas comunes de aplicar diseño a tu texto.
Cómo cambiar el color del texto
@Composable fun BlueText() { Text("Hello World", color = Color.Blue) }
Cómo cambiar el tamaño del texto
@Composable fun BigText() { Text("Hello World", fontSize = 30.sp) }
Convertir el texto en cursiva
Usa el parámetro fontStyle
para que el texto aparezca en cursiva (o configurar otro FontStyle
).
@Composable fun ItalicText() { Text("Hello World", fontStyle = FontStyle.Italic) }
Aplicar negrita al texto
Usa el parámetro fontWeight
para que el texto aparezca en negrita (o configura otro FontWeight
).
@Composable fun BoldText() { Text("Hello World", fontWeight = FontWeight.Bold) }
Cómo agregar una sombra
El parámetro style
te permite establecer un objeto de tipo TextStyle
y configurar varios parámetros, por ejemplo, la sombra.
Shadow
recibe un color para la sombra, el desplazamiento o su ubicación con respecto al Text
y el radio de desenfoque, que es el aspecto borroso.
@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 ) ) ) }
Agrega varios estilos en el texto
Para configurar estilos diferentes en el mismo elemento componible Text
, usa una AnnotatedString
, una cadena que se puede anotar con estilos de anotaciones arbitrarias.
AnnotatedString
es una clase de datos que contiene lo siguiente:
- Un valor
Text
- Una
List
deSpanStyleRange
, equivalente al estilo intercalado con el rango de posición dentro del valor de texto - Una
List
deParagraphStyleRange
que especifica la alineación del texto, la dirección del texto, la altura de la línea y el estilo de sangría del texto
TextStyle
es para uso en el elemento componible Text
, mientras que SpanStyle
y ParagraphStyle
se usan en AnnotatedString
. Para obtener más información sobre varios diseños en un párrafo, consulta Cómo agregar varios diseños en un párrafo.
AnnotatedString
tiene un compilador de tipo seguro para facilitar la creación: 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") } ) }
Habilita el diseño avanzado con Brush
Para habilitar diseños de texto más avanzados, puedes usar la API de Brush
con TextStyle
y SpanStyle
. En cualquier lugar en el que normalmente usarías TextStyle
o SpanStyle
, ahora también puedes usar Brush
.
Usa un pincel para aplicar estilos de texto
Configura el texto con un pincel integrado en TextStyle
. Por ejemplo, puedes configurar un pincel linearGradient
para tu texto de la siguiente manera:
val gradientColors = listOf(Cyan, LightBlue, Purple /*...*/) Text( text = text, style = TextStyle( brush = Brush.linearGradient( colors = gradientColors ) ) )
No estás limitado a este esquema de colores o estilo de coloración en particular. Si bien proporcionamos un ejemplo simple para destacar, usa cualquiera de los pinceles integrados o incluso solo un SolidColor
para mejorar el texto.
Integraciones
Dado que puedes usar Brush
junto con TextStyle
y SpanStyle
, la integración con TextField
y buildAnnotatedString
es perfecta.
Para obtener más información sobre el uso de la API de pincel dentro de un TextField
, consulta Entrada de estilo con la API de Brush.
Diseño adicional con SpanStyle
Cómo aplicar un pincel a un intervalo de texto
Si solo deseas aplicar un pincel a partes del texto, usa buildAnnotatedString
y la API de SpanStyle
, junto con el pincel y el gradiente que elijas.
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.") } )
Opacidad en un intervalo de texto
Para ajustar la opacidad de un fragmento de texto en particular, usa el parámetro opcional alpha
de SpanStyle
. Usa el mismo pincel para ambas partes de un texto y cambia el parámetro alfa en el intervalo correspondiente.
En la muestra de código, el primer intervalo de texto se muestra con la mitad de opacidad (alpha =.5f
), mientras que el segundo se muestra con opacidad completa (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 ❤️") } }
Recursos adicionales
Para ver más ejemplos de personalización, consulta la entrada de blog Cómo repasar en Compose Text Coloring. Si te interesa obtener más información sobre cómo Brush
se integra en nuestra API de Animations, consulta Color de texto con Brush animado en Compose.
Aplicar un efecto de marquesina al texto
Puedes aplicar el modificador basicMarquee
a cualquier elemento componible para producir un efecto de desplazamiento animado. El efecto de marquesina se produce si el contenido es demasiado ancho para ajustarse a las restricciones disponibles. De forma predeterminada, basicMarquee
tiene configuradas ciertas opciones (como la velocidad y la demora inicial), pero puedes modificar estos parámetros para personalizar el efecto.
En el siguiente fragmento, se implementa un efecto de selección básico en un elemento componible 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: El modificador basicMarquee
aplicado al texto.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Cómo aplicar formato a un párrafo
- Material Design 2 en Compose
- Modificadores gráficos