全篇: Jetpack Compose学习(2)——文字(Text)的运用 | Stars-One的商品小房子

对于开发设计设计方案来讲,文本更加基本上的构件,大伙儿先从这两个运用从现在起

这篇涉及到Kotlin和DSL特性的运用 若不了解得话很有可能会致使编号阅读文章文章内容艰辛,文章阅读前确保您有之上基础知识!!!

系列产品商品以往文章请查看此分类联接jetpackCompose学习培训

基本上运用

@Preview(showBackground = true)
@Composable
fun textdemo() {
    ComposeDemoTheme {
        Column() {
			//基本上运用
            Text(text = "Hello world")
			//文本色彩
            Text(text = "Hello world", color = Color.Blue)
			//字体样式尺寸,sp关键字务必导入
			Text("Hello World", fontSize = 30.sp)
			//斜体字
            Text("Hello World", fontStyle = FontStyle.Italic)
			//字体加粗
            Text("Hello World", fontWeight = FontWeight.Bold)
			//文本外溢(说明句点) repeat是不断的寓意,文字内容是20个Hello world组成的标识符串二维数组
            Text(text = "Hello world".repeat(20),overflow = TextOverflow.Ellipsis,maxLines = 2)

        }
    }
}

之上编号的具体实际效果如下图所表明:

JetpackCompose学习(2)——文字(Text)的应用插图

特性 说明
text 文本
color 文本色彩
fontSize 文字尺寸
fontStyle 字体效果, 可设置为斜体字Italic
fontWeight 字体效果权重,可设置字体加粗
overflow 文本外溢实际效果,与maxLines结合运用可进行文本外溢说明句点实际效果
maxLines 比较大数量 ,与overflow结合运用进行文本外溢说明句点实际效果

PS:这里提下,也有一个重要的特性Modifier,这一准备充分在和合理布局运用一起讲解,其作用很强悍,可以 设置操纵高宽,状况,点一下实际效果,间距,旋转等实际效果,所有的构件都是存在有这一特性,方便快捷大伙儿对构件进行调整

之上列出的特性并并非是全部,也有一些并没有太普遍的就没分类整理了

弥补: 一般我们是将常用的文字放进string.xml文本文档中,倘若要想得到这里的数值,compose也是给与有比较应的方法,当然,除了文字之外,色彩等资源也是有相对应的方法

文字 -> stringResource(R.string.app_name)

色彩 -> colorResource(R.color.black)

规格型号 -> dimensionResource(R.dimen.padding_small)

相片 -> painterResource(R.drawable.ic_logo)

单行文本多样式

大伙儿很有可能遇到这样的情况,在一行文字中,在这其中某一具体地址可以 点一下,或者某一句子务必字体加粗,按照以往的操作过程,大伙儿就得用很多TextView来进行或借助他人封裝的View来进行

但在Compose中,我们可以很方便的实现之上那般的实际效果,text特性除了接纳字符串数组,还可以接纳一个关键主要参数AnnotatedString,如下图所表明

JetpackCompose学习(2)——文字(Text)的应用插图1

提示:倘若你快捷键是默认 的话,在方法括号里按着ctrl p可以 看到基本参数提示 :good:

官方网网文本文本文档的描述:

The basic data structure of text with multiple styles.

翻译回家便是AnnotatedString是一种具有多种多样多种多样样式的文字的大部分优化算法设计方案

文本文本文档上也是反映了,极力推荐可以 运用构建器来转换成总体目标,事实上也就是一个方法buildAnnotatedString()

此方法里面我们可以运用Kotlin的语言表达表述特性DSL,更快捷的创建一个AnnotatedString

来段简易的编码:

@Composable
fun ParaGraphStyle() {
    Text(
        buildAnnotatedString {
            withStyle(style = ParagraphStyle(lineHeight = 30.sp)) {
				//设置Hello为暗蓝色字体效果
                withStyle(style = SpanStyle(color = Color.Blue)) {
                    append("Hello")
                }       
            }
        }
    )
}

buildAnnotatedString方法里存在有withStyleappend方法,这两个方法其实是AnnotatedString.Builder类里的方法

这里是选择了lambda书写,buildAnnotatedString花括号里的总体目标就是AnnotatedString.Builder

withStyle可以 接纳ParagraphStyleSpanStyle

从字面上很容易掌握,ParagraphStyle是段落样式,SpanStyle是单行样式

从结构涵数来看,SpanStyle事实上和Text的构造方法相近,而且比Text类中的特性都必须 多种多样,如设置环境色调,阴影等(而Text类中这类功效都封号裝在Modified类里)

前面例举的特性表格它全是有,但除了text特性(当然,还可以掌握,这只是个Style,要text特性做什么 )