当前位置:   article > 正文

Compose - Text 详解_android compose text

android compose text

}

image.png

字体加粗 ☆

Text(
text = value,
fontWeight = FontWeight.W800
)

下图中 左右两边等价

image.png

image.png

字体 ☆

Text(
text = value,
fontFamily = FontFamily.Default
)

image.png

可以使用 fontFamily 属性来处理 res/font 文件夹中定义的自定义字体和字型

image.png

  • 需要注意 引入的字体库名称 必须仅包含小写字母az,0-9或下划线
  • 引入完成就以后需要rebuild一下,否则无法找到 font
  • 字体下载

val fontFamily = FontFamily(
Font(resId = R.font.myfont, weight = FontWeight.Normal)
)
Text(
text = “Demo Text”,
style = TextStyle(
fontFamily = fontFamily,
)
)

字间隔空 ☆

Text(
text = value,
letterSpacing = 2.sp
)

image.png

文字装饰 ☆

Text(
text = value,
textDecoration = TextDecoration.None
)

image.png

对齐方式 ☆

相当于传统的 android:gravity='left'

Text(
text = value,
textAlign = TextAlign.Left
)

image.png

其中Justify表示两端贴边

image.png

TextAlign.StartTextAlign.Left的区别

有些国家的文字是从右往左。例如阿拉伯语。

  • TextAlign.Left表示 不管你是什么语言,都是靠左
  • TextAlign.Start会根据首选项语言去选择从左还是从右

image.png

行高 ☆

Text(
text = value,
lineHeight = 30.sp
)

image.png

最大行数

Text("hello ".repeat(50), maxLines = 2)

image.png

文字溢出

Text(
text = value,
overflow = TextOverflow.Ellipsis,
maxLines = 1
)

  • Clip 将溢出的部分裁剪
  • Ellipsis 使用省略号表示溢出部分
  • Visible 指定范围内没有足够的空间。也要显示所有文本

image.png

关于最后一个Visible官网中可以找到示例去演示器效果。笔者这边简化了一下。示例如下。

Box(modifier = Modifier
.size(300.dp, 150.dp)
.background(Color.Red)) {
Text(
text = “Hello World”.repeat(2),
modifier = Modifier
.size(200.dp, 70.dp)
.background(Color.Yellow),
fontSize = 35.sp,
overflow = TextOverflow.Visible,
)
}

未设置Visible设置了Visible
image.pngimage.png

换行处理

Text(
text = value2,
softWrap = false
)

  • false 被定位为有无限的水平空间
  • true 默认会有边界

image.png

onTextLayout

计算新的文本布局时执行的回调.预览是不打印的。只有运行才会打印

@Preview(showBackground = true)
@Composable
fun SimpleText7() {
val value = “hello world”
Column(Modifier.width(200.dp)) {
Text(
text = value,
onTextLayout = {
Log.i(“TAGText”,it.toString())
}
)
}
}

运行以后的结果,可以看到所有的属性都被打印出来了

2021-04-14 11:40:50.016 16830-16830/com.starot.pencase_compose I/TAGText: TextLayoutResult(layoutInput=TextLayoutInput(
text=hello world,
style=TextStyle(color=Color(0.0, 0.0, 0.0, 1.0, sRGB IEC61966-2.1),
fontSize=Unspecified,
fontWeight=null,
fontStyle=null,
fontSynthesis=null,
fontFamily=null,
fontFeatureSettings=null,
letterSpacing=Unspecified,
baselineShift=null,
textGeometricTransform=null,
localeList=null,
background=Color(0.0, 0.0, 0.0, 0.0, None),
textDecoration=null,
shadow=null,
textAlign=null,
textDirection=null,
lineHeight=Unspecified,
textIndent=null),
placeholders=[],
maxLines=2147483647,
softWrap=true,
overflow=Clip,
density=DensityImpl(density=2.75, fontScale=1.0),
layoutDirection=Ltr,
resourceLoader=androidx.compose.ui.platform.AndroidFontResourceLoader@7058a4b,
constraints=Constraints(minWidth = 0, maxWidth = 550, minHeight = 0, maxHeight = 1977)),
multiParagraph=androidx.compose.ui.text.MultiParagraph@e80ec28,
size=184 x 52,
firstBaseline=41.0,
lastBaseline=41.0, placeholderRects=[])

文字样式
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/1019282

推荐阅读
相关标签