Android Compose四: 常用的组件 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,maxLines: Int = Int.MAX_VALUE,onTextLayout: (TextLayoutResult) -> Unit = {},style: TextStyle = LocalTextStyle.current
) 
1 字体颜色 可能受主题ColorScheme影响

例如 我们使用lightColorScheme 且改变主题颜色如下
在这里插入图片描述

  • 当 背景颜色 与 主题颜色一致时 会使用 onPrimary设置的颜色
  • 给 Text 设置color 属性时,使用color的颜色
    效果如下:
    在这里插入图片描述
  • 当如下设置主题时
 primary = Color(0xFFFF0000),secondary = PurpleGrey40,tertiary = Pink40,background = Color(0xFF00FF00),  //背景颜色这只为绿色

效果
在这里插入图片描述
变更背景颜色 为 红色 background = Color(0xFFFF0000) 主题色一致, 字体会默认变换为白色

在这里插入图片描述
应该是不设置 onPrimary 颜色时 默认的颜色
在这里插入图片描述
在这里插入图片描述

  • onPrimary 主色上清晰显示的颜色 可用于文本或图标 就是 区分和主色一样颜色时的颜色

2 字体大小

系统默认字体大小调用如下

  • fontSize: TextUnit = TextUnit.Unspecified,
  • val Unspecified = pack(UNIT_TYPE_UNSPECIFIED, Float.NaN)
  • TextUnit(unitType or (v.toBits().toLong() and 0xFFFF_FFFFL))
    设置字体大小
Text(text = "鹅鹅鹅", fontSize = 30.sp)

效果
在这里插入图片描述

3 通常情况下 我们需要定义整个项目的字体大小和颜色

于是乎我们可以复制一下Text 改造一下
在这里插入图片描述
或者 自己定义一个组件


@Composable
fun MyText(text: String,modifier: Modifier = Modifier,color: Color = TEXT_COLOR_333,fontSize: TextUnit = 22.sp,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,maxLines: Int = Int.MAX_VALUE,onTextLayout: (TextLayoutResult) -> Unit = {},style: TextStyle = LocalTextStyle.current
){Text(text = text,modifier = modifier,color = color,fontSize = fontSize,fontStyle = fontStyle,fontWeight = fontWeight,fontFamily = fontFamily,letterSpacing = letterSpacing,textDecoration = textDecoration,textAlign = textAlign,lineHeight = lineHeight,overflow = overflow,softWrap = softWrap,maxLines = maxLines,onTextLayout = onTextLayout,style = style,)
}

效果
在这里插入图片描述

那么问题来了,屏幕适配怎么整,后边再整吧!

4 fontStyle fontStyle = FontStyle.Italic,

默认:FontStyle.Normal
斜体:FontStyle.Italic
在这里插入图片描述

  • fontWeight fontWeight = FontWeight.Bold
    粗体:FontWeight.Bold 第二行为对比的默认效果
    在这里插入图片描述
    其他效果不明显,可自行测试
5 fontFamily = FontFamily.Cursive
  • FontFamily.Cursive 草书 没啥变化感觉 第二行为对比的默认效果
    在这里插入图片描述

  • FontFamily.Serif 第二行为对比的默认效果
    在这里插入图片描述

  • FontFamily.Default 默认
    在这里插入图片描述

  • FontFamily.Monospace 感觉没啥变化
    在这里插入图片描述

  • FontFamily.SansSerif

  • 没啥变化的可能测试手机不支持这种字体吧

5 letterSpacing

文字间隔
letterSpacing = 50.sp 第二行为对比的默认效果
在这里插入图片描述

6 textDecoration

划线
textDecoration = TextDecoration.LineThrough 第二行为对比的默认效果
在这里插入图片描述
textDecoration = TextDecoration.Underline
在这里插入图片描述

7 textAlign 文字对齐方向
 modifier = Modifier.fillMaxWidth(),textAlign = TextAlign.Left   

第二行为对比的默认效果
在这里插入图片描述
textAlign = TextAlign.Center
在这里插入图片描述

8 lineHeight行间距 应该是文字基线到下一行文字基线的间距吧

lineHeight = 30.sp 行间距设置30 不够文字高度

MyText(text = "咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅",  fontSize = 50.sp,fontFamily = FontFamily.SansSerif,letterSpacing = 50.sp,textDecoration = TextDecoration.Underline,modifier = Modifier.fillMaxWidth(),textAlign = TextAlign.Center,lineHeight = 30.sp)

在这里插入图片描述

9 softWrap 是否换行

softWrap = false,
在这里插入图片描述

10 overflow 文字超出显示宽度时的显示效果

搭配softWrap 使用
默认 overflow = TextOverflow.Clip 截断
在这里插入图片描述
overflow = TextOverflow.Ellipsis
在这里插入图片描述
overflow = TextOverflow.Visible的效果 超出限制范围显示
modifier = Modifier.width(130.dp), 限制组件 130dp
无overflow的效果
```
MyText(text = “咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅”, fontSize = 50.sp,
fontFamily = FontFamily.SansSerif,
textDecoration = TextDecoration.Underline,

       modifier = Modifier.width(130.dp),textAlign = TextAlign.Center,lineHeight = 50.sp,softWrap = false,)```

在这里插入图片描述
添加 overflow = TextOverflow.Visible的效果
在这里插入图片描述

11 maxLines 最大行数

maxLines = 2

 MyText(text = "咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅",  fontSize = 50.sp,fontFamily = FontFamily.SansSerif,textDecoration = TextDecoration.Underline,modifier = Modifier.fillMaxWidth(),textAlign = TextAlign.Center,lineHeight = 50.sp,overflow = TextOverflow.Ellipsis,maxLines = 2)

在这里插入图片描述

12 onTextLayout 字面意思应该是 text渲染到布局的时候的回调

官方注释: callback that is executed when a new text layout is calculated. A
在这里插入图片描述
也差不多一个意思吧

 MyText(text = "咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅",  fontSize = 50.sp,fontFamily = FontFamily.SansSerif,textDecoration = TextDecoration.Underline,modifier = Modifier.fillMaxWidth(),textAlign = TextAlign.Center,lineHeight = 50.sp,overflow = TextOverflow.Ellipsis,maxLines = 2,onTextLayout = {Log.i("text_compose","${it.lineCount}")})

在这里插入图片描述

13 style 样式
13.1 style = TextStyle()
 constructor(color: Color = Color.Unspecified,    // 与Text的color效果一致 设置文字颜色   优先级低于 Text的colorfontSize: TextUnit = TextUnit.Unspecified,  //设置字体大小   优先级低于 Text的fontWeight: FontWeight? = null,   //设置字体权重   优先级低于 Text的fontStyle: FontStyle? = null,   //设置字体斜体   优先级低于 Text的fontSynthesis: FontSynthesis? = null,   fontFamily: FontFamily? = null,   //设置字体  草书什么的fontFeatureSettings: String? = null,letterSpacing: TextUnit = TextUnit.Unspecified,baselineShift: BaselineShift? = null,textGeometricTransform: TextGeometricTransform? = null,localeList: LocaleList? = null,background: Color = Color.Unspecified,textDecoration: TextDecoration? = null,shadow: Shadow? = null,textAlign: TextAlign? = null,     textDirection: TextDirection? = null,lineHeight: TextUnit = TextUnit.Unspecified,textIndent: TextIndent? = null)

color 与 Text的color效果一样,但是优先级低 同时存在时使用text的color

Text(text = "咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅",  fontSize = 50.sp,fontFamily = FontFamily.SansSerif,textDecoration = TextDecoration.Underline,modifier = Modifier.fillMaxWidth(),textAlign = TextAlign.Center,lineHeight = 50.sp,overflow = TextOverflow.Ellipsis,maxLines = 2,onTextLayout = {Log.i("text_compose","${it.lineCount}")},color = TEXT_COLOR_999,style = TextStyle(color = Color.Red))

同时存在
在这里插入图片描述
删除Text 的 color = TEXT_COLOR_999,
在这里插入图片描述
其余 参数名与Text一样的 都是此类似结果
下面说明一下其他参数

13.2 fontSynthesis 大概可能就是使用的fontFamily 没有粗体或者斜体的时候,系统给造一个

在这里插入图片描述

13.3 fontFeatureSettings

在这里插入图片描述

13.4 baselineShift 文字基线上下移动

在这里插入图片描述
baselineShift = BaselineShift.None
在这里插入图片描述
baselineShift = BaselineShift.Subscript
//顶部多了一块空白
在这里插入图片描述
baselineShift = BaselineShift.Superscript
//底部多了一块空白
在这里插入图片描述
BaselineShift 类
value class BaselineShift(val multiplier: Float)

在这里插入图片描述

baselineShift = BaselineShift(0.6f) //正数 往上偏移 负数往下偏移么
在这里插入图片描述

13.5 textGeometricTransform = TextGeometricTransform(0.5f,0f)

在这里插入图片描述
textGeometricTransform = TextGeometricTransform(0.5f,0f) 效果
在这里插入图片描述
textGeometricTransform = TextGeometricTransform(0.5f,0.5f)效果
在这里插入图片描述
textGeometricTransform = TextGeometricTransform(0.5f,-0.5f)
在这里插入图片描述

 Box() {Text(text = "咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅",  fontSize = 50.sp,fontFamily = FontFamily.SansSerif,letterSpacing = 20.sp,textDecoration = TextDecoration.Underline,modifier = Modifier.fillMaxWidth(),textAlign = TextAlign.Center,lineHeight = 50.sp,overflow = TextOverflow.Ellipsis,maxLines = 2,onTextLayout = {Log.i("text_compose","${it.lineCount}")},style = TextStyle(color = Color(0x77FF0000),baselineShift = BaselineShift(-0.4f),textGeometricTransform = TextGeometricTransform(0.8f,-1f)))Text(text = "咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅咏鹅",fontSize = 50.sp,letterSpacing = 20.sp,fontFamily = FontFamily.SansSerif,textDecoration = TextDecoration.Underline,modifier = Modifier.fillMaxWidth(),textAlign = TextAlign.Center,fontWeight = FontWeight.Bold,lineHeight = 50.sp,overflow = TextOverflow.Ellipsis,maxLines = 2,onTextLayout = {Log.i("text_compose","${it.lineCount}")},style = TextStyle(color = Color.Red,baselineShift = BaselineShift(-0.4f),textGeometricTransform = TextGeometricTransform(0.8f,0f)))}

效果
在这里插入图片描述

13.6 localeList 布吉岛咋玩

在这里插入图片描述

13.7 shadow 文字设置阴影
 style = TextStyle(color = Color.Blue,baselineShift = BaselineShift(-0.4f),shadow = Shadow(color = Color(0x77FF0000),offset = Offset(5.0f,10f), blurRadius = 3f))

在这里插入图片描述

13.8 textIndent 缩进

textIndent = TextIndent(60.sp,30.sp)
在这里插入图片描述
效果
在这里插入图片描述

13.9 platformStyle

在这里插入图片描述

13.10 lineHeightStyle

在这里插入图片描述

在这里插入图片描述

lineHeightStyle = LineHeightStyle(
alignment = LineHeightStyle.Alignment.Center,
trim = LineHeightStyle.Trim.Both)

alignment = LineHeightStyle.Alignment.Top,
alignment = LineHeightStyle.Alignment.Bottom,
效果 好像没什么变化
在这里插入图片描述

trim = LineHeightStyle.Trim.FirstLineTop 改成此值时
底部多了空白空间
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/327139.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RockChip Android8.1 EthernetService分析

一:概述 本篇文章将围绕RK Android8.1 SDK对Ethernet做一次框架分析,包含Framework层和APP层。 当前版本SDK默认只支持一路Ethernet,熟悉Ethernet工作流程后通过修改最终会在系统Setting以太网中呈现多路选项(可以有多种实现方式),博主通过增加ListPreference实现的效果…

Linux 操作系统网络编程1

目录 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型 1.1.2 网络数据传输过程 2 传输层通信协议 2.1 TCP 2.1.1 TCP的3次握手过程 2.1.2 TCP四次挥手过程 2.2 UDP 3 网络编程的IP地址 4 端口 5 套接字 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型…

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式: 当键盘按ctrlc的时候,切换消息读取方式,一般情况为读取指定编号的消息,按ctrlc之后,指定的编号不读取,读取其他所有编号的消息…

【江南大学×朗汀留学】部分留学录取案例合集

朗汀留学 X 江南大学 尽管客观条件如此艰难,朗汀留学的同学们还是斩获众多名校的录取。成绩属于过去,我们继续努力创造更好未来。 以下为我们摘取的江南大学部分学生案例供大家参考,再次恭喜所有获得理想大学offer的学生们,你们…

C# OpenCvSharp Demo - Mat格式化输出、Mat序列化和反序列化

C# OpenCvSharp Demo - Mat格式化输出、Mat序列化和反序列化 目录 效果 项目 代码 下载 效果 直接输出:Mat [ 3*2*CV_8UC3, IsContinuousTrue, IsSubmatrixFalse, Ptr0x1eb73ef9140, Data0x1eb73ef91c0 ]格式化输出:默认风格[ 91, 2, 79, 179, …

【计算机网络】http协议的原理与应用,以及https是如何保证安全传输的

HTTP 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 HTTP的发展是由蒂姆伯纳斯-李于1989年在欧洲核子研究组织…

Web3Tools - 助记词生成

Web3Tools - 助记词生成工具 本文介绍了一个简单的助记词生成工具,使用 React 和 Material-UI 构建。用户可以选择助记词的语言和长度,然后生成随机的助记词并显示在页面上 功能介绍 选择语言和长度: 用户可以在下拉菜单中选择助记词的语言&…

Linux x86_64 dump_stack()函数基于FP栈回溯

文章目录 前言一、dump_stack函数使用二、dump_stack函数源码解析2.1 show_stack2.2 show_stack_log_lvl2.3 show_trace_log_lvl2.4 dump_trace2.5 print_context_stack 参考资料 前言 Linux x86_64 centos7 Linux:3.10.0 一、dump_stack函数使用 dump_stack函数…

大模型prompt实例:知识库信息质量校验模块

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模…

DRF 纯净版创建使用

【一】介绍 (1)使用原因 在Django中,contrib 包包含了许多内置的app和中间件,如auth、sessions、admin等,这些app在创建新的Django项目时默认是包含在内的。然而,在开发RESTful API时,可能不需…

linux性能监控之lsof

lsof:list open files,显示所有打开的文件以及进程信息,我们通常用来检查特定的文件被哪些进程打开 [rootk8s-master ~]# lsof --help lsof: illegal option character: - lsof: -e not followed by a file system path: "lp" lso…

网络传输,请每次都开启 TCP_NODELAY

原文:Marc Brooker - 2024.05.09 (注:不必过于担心这个问题,大部分现代库,语言(如 Go),代理(如 Envoy),都默认设置了 TCP_NODELAY。如果遇到网络…

光耦 IS314W中文资料 IS314W引脚图及功能说明

IS314W是一款IGBT/MOSFET输出型光耦,由Isocom公司制造。它主要用于驱动用于电机控制和电源系统变频器的功率IGBT和MOSFET。以下是该产品的部分功能和参数: - 两个独立的光耦输出通道 - 轨对轨输出电压 - 最大峰值输出电流:1.0A - 最小峰值输…

DDoS攻击揭秘与网站防护策略

DDoS攻击(分布式拒绝服务攻击)是一种利用大量被控制的计算机或智能设备(如僵尸网络)对目标网站或服务器发起大量无效请求或数据流量,从而导致目标系统资源耗尽、服务崩溃或无法处理正常请求的攻击方式。这种攻击通常是…

【cpp】并发多线程 Unique

1. unique_lock 何时锁定资源。 unique_lock lock1 时候&#xff0c;还没有锁住资源。 实际是后面&#xff0c;显式的出发&#xff1a; 比如&#xff0c; lock.lock, 或 std::lock(lk1,lk2), 或者条件变量CV.wait(mtx, []{!re})。 #include <iostream> #include <mu…

《大数据分析-数据仓库项目实战》学习笔记

目录 基本概念 数据仓库 数据仓库整体技术架构 数据仓库主题 数据集市 数据仓库的血缘关系 数据仓库元数据管理 数据仓库的指标 数据仓库维度概念 HDFS Flume Hadoop Kafka 数据仓库分层模型 Superset 即席查询 Sqoop Atlas元数据管理 项目需求描述 系统目标…

python 对矩阵与矩阵之间对应位置的元素,做softmax操作,代码实战

1.对矩阵中对应位置的元素&#xff0c;做softmax 对于一个向量&#xff0c;softmax函数会对其中每一个元素进行指数运算&#xff0c;然后除以所有元素指数和的结果。当将其应用到多个矩阵的相应位置上时&#xff0c;我们实际上是在对每个位置的一组数&#xff08;从各个矩阵的同…

pyqt学习过程中的问题

1&#xff0c; 2. 3.传递参数&#xff1a; 第二个函数缺少参数self, 第三种方法&#xff1a;可以使用 lambda 表达式 # 连接按钮的点击信号到槽函数&#xff0c;传递一个参数 self.button.clicked.connect(lambda: self.onButtonClicked(10))def onButtonClicked(self, value)…

基于ChatGPT 和 OpenAI 模型的现代生成式 AI

书籍&#xff1a;Modern Generative AI with ChatGPT and OpenAI Models: Leverage the capabilities of OpenAIs LLM for productivity and innovation with GPT3 and GPT4 作者&#xff1a;Valentina Alto 出版&#xff1a;Packt Publishing 书籍下载-《基于ChatGPT 和 Op…

Taro 快速开始

大家好我是苏麟 , 今天聊聊Trao. 官网 : Taro 介绍 | Taro 文档 (jd.com) 点击快速开始 全局安装 CLI 初始化一个项目 选择配置 : 根据自己需求选择 安装失败先不用管 , 用前端工具打开项目 npm install 安装 , 显示安装失败 怎么解决 ? : 查看报错信息 百度 , 问 AI 工具 运…