Compose | UI组件(二) | Text() 文本组件

Text() 简介

显示文字的组件

Text() 参数说明

@Composable
fun Text(
    text: String,                                   //要显示的文本
    modifier: Modifier = Modifier,                  //修饰符
    color: Color = Color.Unspecified,               //文字颜色
    fontSize: TextUnit = TextUnit.Unspecified,      //文字大小
    fontStyle: FontStyle? = null,                   //文字变体
    fontWeight: FontWeight? = null,                 //文字粗细
    fontFamily: FontFamily? = null,                 //文字字体
    letterSpacing: TextUnit = TextUnit.Unspecified, //文字间距
    textDecoration: TextDecoration? = null,         //文字装饰-如下划线等
    textAlign: TextAlign? = null,                   //文字对齐方式
    lineHeight: TextUnit = TextUnit.Unspecified,    //每行文字间距
    overflow: TextOverflow = TextOverflow.Clip,     //文字溢出视觉效果
    softWrap: Boolean = true,                       //控制文本是否换行,为false,则定位
    maxLines: Int = Int.MAX_VALUE,                  //文本最大几行
    onTextLayout: (TextLayoutResult) -> Unit = {},  //文本发生变化之后的回调函数
    style: TextStyle = LocalTextStyle.current       //文本风格配置(颜色,字体,行高)
)

Text() 显示文字

显示文字内容

//指定字符串
Text(text="Hello World")
//指定文字资源
Text(text= stringResource(id = R.string.app_hello_world))

<string name="app_hello_world">HelloWorld</string>

fontSize 文字大小

Text(text="Hello World", fontSize = 16.sp)

textAlign 文字对齐方式

//左对齐 TextAlign.Start 或者 TextAlign.Left
Text(text="Hello World",
     modifier = Modifier.fillMaxWidth(),
     fontSize = 16.sp,
     textAlign = TextAlign.Start)
//居中对齐 TextAlign.Center
Text(text="Hello World",
     modifier = Modifier.fillMaxWidth(),
     fontSize = 16.sp,
     textAlign = TextAlign.Center)
//右对齐 TextAlign.End 或者 TextAlign.Right
Text(text="Hello World",
     modifier = Modifier.fillMaxWidth(),
     fontSize = 16.sp,
     textAlign = TextAlign.End)

注:如果是 Column 设置水平对齐方式,一定要加 modifier = Modifier.fillMaxWidth() 否则设置对齐无效

style 文字样式

设置文本样式

Text(text  = "HelloWorld\n"+"Goodbye World Boy",
    style = TextStyle(
        fontSize = 25.sp,                         //字体大小
        fontWeight = FontWeight.W900,             //字体粗细
        background = Color.Red,                   //背景
        lineHeight = 60.sp,                       //行高
        letterSpacing = 4.sp,                     //字体间距
        textDecoration = TextDecoration.Underline //下滑线
    )
)

fontFamily 文字字体

//fontFamily字体风格
Text(text = "Hello World", fontFamily = FontFamily.Monospace)
Text(text = "Hello World", fontFamily = FontFamily.Cursive)

AnnotatedString 多样式文字

AnnotatedString设置一段多样式的文字结合体

Text(text = buildAnnotatedString {
    withStyle(style = SpanStyle(fontSize = 24.sp)){
        append("我是")
    }
    withStyle(style = SpanStyle(
        fontSize = 30.sp,
        textDecoration = TextDecoration.Underline,
        fontWeight = FontWeight.W900,
        color = Color(0xFF59A869)
    )
    ){
        append("谭祖爱")
    }
})

注:buildAnnotatedString{…},以DSL方式构建一个 AnnotatedString 。其中 append 用来添加字符串文本,withStyleappend 的字符串指定文字段落样式

maxLines 设置文本单行显示

Text(text  = "HelloWorld "+"Goodbye World Boy",
    style = TextStyle(
        fontSize = 25.sp,             //字体大小
        fontWeight = FontWeight.W900, //字体粗细
        background = Color.Red,       //背景
        lineHeight = 60.sp,           //行高
        letterSpacing = 4.sp,         //字体间距
        textDecoration = TextDecoration.Underline //下滑线
    ),
    maxLines = 1, //文本显示行数
    overflow = TextOverflow.Ellipsis //Ellipsis 处理一行文字过长,以...代替
)

SelectionContainer 选中文字

SelectionContainer {
    Text(text = "Hello World", fontFamily = FontFamily.Monospace)
}

注:Text 默认是没有长按选择,Compose 提供了专门长按选择组件 SelectionContainer 。这里可见 Compose 在组件设计上,将关注点分离原则做到了极致

总结

  1. Text() 显示文字的组件
  2. fontSize 设置文字大小
  3. textAlign 设置文字对齐方式
  4. style 设置文字的样式
  5. fontFamily 设置文字风格
  6. SelectionContainer 选中文字的组件
  7. maxLines 配合 overflow 等于 TextOverflow.Ellipsis 单行显示,文本过长,以 代替

想了解 Modifier 修饰符 用法,可移步:Compose | UI组件(一) | Modifier修饰符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谭祖爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值