Jetpack Compose基础组件之 Text

概述

本文基于androidx.compose.material3依赖进行分析。依赖版本

makefile 复制代码
androidx.compose.material3:material3-android:1.3.1

Text 组件是 Jetpack Compose 中用于显示文本的基本组件。它提供了丰富的功能来自定义文本的外观和行为。

基本用法

要使用 Text 组件,只需导入 androidx.compose.material3.Text 并在 Composable 函数中调用它。

1.text: String

  • 描述: 要显示的文本内容。

  • 示例:

    ini 复制代码
    Text(text = "Hello, Jetpack Compose!")

2. modifier: Modifier = Modifier

  • 描述 : 用于修改 Text 的布局、外观或行为,例如添加填充、边距、点击事件等。

  • 示例:

    ini 复制代码
    Text(
        text = "Hello, World!",
        modifier = Modifier.padding(16.dp).background(Color.LightGray)
    )

3. color: Color = Color.Unspecified

  • 描述: 设置文本的颜色。如果未指定,则使用父级样式的默认颜色。

  • 示例:

    ini 复制代码
    Text(
        text = "Hello, World!",
        color = Color.Red
    )

4. fontSize: TextUnit = TextUnit.Unspecified

  • 描述 : 设置文本的字体大小。单位可以是 sp(可缩放像素)或 px(像素)。

  • 示例:

    ini 复制代码
    Text(
        text = "Hello, World!",
        fontSize = 20.sp
    )

5. fontStyle: FontStyle? = null

  • 描述 : 设置文本的字体样式(如正常或斜体)。可选值为 FontStyle.NormalFontStyle.Italic

  • 示例:

    ini 复制代码
    Text(
        text = "Hello, World!",
        fontStyle = FontStyle.Italic
    )

6. fontWeight: FontWeight? = null

  • 描述 : 设置文本的字体粗细。可选值包括 FontWeight.ThinFontWeight.Bold 等。

  • 示例:

    ini 复制代码
    Text(
        text = "Hello, World!",
        fontWeight = FontWeight.Bold
    )

7. fontFamily: FontFamily? = null

  • 描述: 设置文本的字体家族。您可以使用系统提供的字体或自定义字体。

  • 示例:

    ini 复制代码
    val customFont = FontFamily(Font(R.font.my_custom_font))
    Text(
        text = "Hello, World!",
        fontFamily = customFont
    )

8. letterSpacing: TextUnit = TextUnit.Unspecified

  • 描述 : 设置字符之间的间距。单位是 em,表示相对于当前字体大小的比例。

  • 示例:

    ini 复制代码
    Text(
        text = "Hello, World!",
        letterSpacing = 0.1.em
    )

9. textDecoration: TextDecoration? = null

  • 描述 : 添加文本装饰效果,例如下划线或删除线。可选值包括 TextDecoration.UnderlineTextDecoration.LineThrough

  • 示例:

    ini 复制代码
    Text(
        text = "Hello, World!",
        textDecoration = TextDecoration.Underline
    )

10. textAlign: TextAlign? = null

  • 描述 : 设置文本在容器中的对齐方式。可选值包括 TextAlign.LeftTextAlign.CenterTextAlign.Right 等。

  • 示例:

    ini 复制代码
    Text(
        text = "Hello, World!",
        textAlign = TextAlign.Center,
        modifier = Modifier.width(200.dp)
    )

11. lineHeight: TextUnit = TextUnit.Unspecified

  • 描述 : 设置行高(即行与行之间的距离)。单位可以是 spem

  • 示例:

    ini 复制代码
    Text(
        text = "Hello,\nWorld!",
        lineHeight = 1.5.em
    )

12. overflow: TextOverflow = TextOverflow.Clip

  • 描述 : 定义当文本溢出其容器时的行为。可选值包括 TextOverflow.Clip(裁剪)、TextOverflow.Ellipsis(省略号)等。

  • 示例:

    ini 复制代码
    Text(
        text = "This is a very long text that will not fit in the container.",
        maxLines = 1,
        overflow = TextOverflow.Ellipsis
    )

13. softWrap: Boolean = true

  • 描述 : 是否允许文本自动换行。如果设置为 false,文本将在一行内显示。

  • 示例:

    ini 复制代码
    Text(
        text = "This is a long text that will not wrap.",
        softWrap = false
    )

14. maxLines: Int = Int.MAX_VALUE

  • 描述 : 设置文本的最大行数。如果超过最大行数,将根据 overflow 属性处理溢出部分。

  • 示例:

    ini 复制代码
    Text(
        text = "This is a long text with multiple lines.",
        maxLines = 2
    )

15. minLines: Int = 1

  • 描述: 设置文本的最小行数。即使文本内容较少,也会占用指定的行数。

  • 示例:

    ini 复制代码
    Text(
        text = "Short text",
        minLines = 3
    )

16. onTextLayout: ((TextLayoutResult) -> Unit)? = null

  • 描述: 一个回调函数,在文本布局完成后调用。可以使用它来获取布局信息,例如文本宽度、高度、行数等。

  • 示例:

    ini 复制代码
    Text(
        text = "Hello, World!",
        onTextLayout = { result ->
            println("Text width: ${result.size.width}, height: ${result.size.height}")
        }
    )

17. style: TextStyle = LocalTextStyle.current

  • 描述 : 提供一个整体的 TextStyle 对象,用于一次性设置多个文本样式属性。可单独封装一个字体样式类,进行全局设置

  • 示例:

    ini 复制代码
    val textStyle = TextStyle(
        color = Color.Blue,
        fontSize = 18.sp,
        fontWeight = FontWeight.Bold
    )
    Text(
        text = "Hello, World!",
        style = textStyle
    )

注意事项

Text 组件默认情况下会自动换行。如果需要禁用自动换行,可以设置 softWrap 参数为 false。 Text 组件支持 AnnotatedString,可以用于在文本中嵌入不同的样式或点击事件。

相关推荐
赵大的程序屋8 天前
Jetpack Compose基础组件之 Button
composer
一条九漏鱼19 天前
数制——FPGA
composer
左小左1 个月前
用Compose撸一个CoordinatorLayout 🔥🔥🔥
android·android jetpack·composer
王大爷~1 个月前
composer 错误汇总
android·php·composer
lihuang3192 个月前
Composer如何通过GitHub Personal Access Token安装私有包:完整教程
github·php·composer
zgscwxd2 个月前
如何安装PHP依赖库 更新2025.2.3
php·composer·phpspreadsheet
zgscwxd2 个月前
如何运行Composer安装PHP包 安装JWT库
composer·jwt库
凡人的AI工具箱3 个月前
每日学习30分轻松掌握CursorAI:多文件编辑与Composer功能
人工智能·python·学习·ai·ai编程·composer·cursor
至天3 个月前
Laravel 新 WebSocket 服务 Reverb 使用指南
websocket·php·laravel·broadcast·composer·队列·reverb