Android开发系列(二)Jetpack Compose 之Text控件

   Jetpack Compose是一种全新的声明式UI框架,用于构建Android应用程序。Jetpack Compose Text控件是Compose中用于显示文本的基本UI组件。

   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,minLines: Int = 1,onTextLayout: (TextLayoutResult) -> Unit = {},style: TextStyle = LocalTextStyle.current
) 

   下面通过示例说明Text的使用方法。

一、简单显示文本

    在Text函数中,参数text用于指定要显示的文本,如下所示

    文本内容可以直接在代码里填入,也可以通过stringResource从资源中读取,如下所示。

二、设置字体颜色

    在Text函数中,参数color用于设置字体颜色,如下所示。

    上面示例将字体设置为红色。

三、设置字体大小

    在Text函数中,参数fontSize用于设置字体大小,如下所示。

    这里用到了Column用于显示列布局。

    fontSize的单位一般使用sp。

四、设置字体样式

    在Text函数中,参数fontStyle用于设置字体样式。

默认情况下字体样式为Normal,斜体对应的值为Italic。

五、设置字体粗细

    在Text函数中,参数fontWeight用于设置字体的粗细。

    从上面的显示效果来看,Thin最细,ExtraBold最粗。

六、设置字体

    在Text函数中,fontFamily用于设置字体,示例如下。

七、设置字符间距

    在Text函数中,参数letterSpacing用于设置字符之间的距离。

    默认情况下字符之间的距离比较小,通过设置letterSpacing可以将字符间的距离拉开。

八、设置文字修饰

    在Text函数中,参数textDecoration用于设置中划线和下划线。

    LineThrouth用于设置中划线。

    UnderLine用于设置下划线。

   通过combine可以同时设置中划线和下划线。

九、设置文字对齐方式

    在Text函数中,参数textAlign用于设置字符在控件中的对齐方式。

    默认情况下,Text控件的大小包含整个字符,在不设置Text宽度的情况下设置对齐方式看不到效果,所以要使用对齐方式,需要通过modifier设置Text控件的宽度。

   Start:左对齐

   Center:中间对齐

   End:右对齐

  Justify:两边对齐

    

十、设置文字溢出效果

   在Text函数中,参数overflow用于设置文字的溢出效果

     默认情况下,Text控件的大小刚刚容下所有的文字,不存在放不下所有文字的情况,要达到文件存放不下,需要指定最大行数及宽度。

  1. Ellipsis在溢出的情况下以省略号表示。
  2. Clip 溢出的情况下直接把溢出的内容截取掉。
  3. Visible 按照官方的说法,经可能显示,如果控件内显示不下,会显示到控件的外面,但是这里的效果与Clip一样,不清楚原因。

 在这里使用maxLines限定最大行数,该参数不单独介绍了。

十一、设置文字样式

    在Text函数中,参数style用于设置文字样式,如下所示

     在样式中,

  1. background 设置背景颜色
  2. shadow 设置阴影
  3. textIndent 设置首先缩进

十二、可复制的文字

  默认情况下 Text 并不能进行复制等操作,需要使用 SelectionContainer 来包装 Text才能使文字可复制。

 使用SelectionContainer包装Text后,文字内容选中后,弹出Copy按钮用于复制文字。

十三、文字包含多种样式

    使用buildAnnotatedString可以给Text设置多种样式

 十四、可点击的文本

    使用ClickableText可以构建可点击的文字

    参数onClick用于接受点击事件,offset返回点击第几个字符。

@Composable
fun TextSample16() {val annotatedString = buildAnnotatedString {append("点击登录代表您知悉和同意")pushStringAnnotation("protocol", annotation = "https://xxx/protocol")withStyle(style = SpanStyle(Color.Blue)) {append("用户协议")}pop()append("和")pushStringAnnotation("privacy", annotation = "https://xxx/private")withStyle(style = SpanStyle(Color.Blue)) {append("隐私政策")}pop()}ClickableText(annotatedString, onClick = { offset ->annotatedString.getStringAnnotations("protocol", start = offset, end = offset).firstOrNull()?.let { annotation ->Log.d("TextSample", "点击了用户协议:${annotation.item}")}annotatedString.getStringAnnotations("privacy", start = offset, end = offset).firstOrNull()?.let { annotation ->Log.d("TextSample", "点击了隐私政策:${annotation.item}")}})
}

 运行后点击效果如下

Text的官方示例

 本示例的工程地址

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

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

相关文章

AGI 远不止 ChatGPT!一文入门 AGI 通识及应用开发

AI 大语言模型进入爆发阶段 2022 年 12 月 ChatGPT 突然爆火,原因是其表现出来的智能化已经远远突破了我们的常规认知。虽然其呈现在使用者面前仅仅只是一个简单的对话问答形式,但是它的内容化水平非常强大,甚至在某些方面已经超过人类了&am…

k8s上使用ConfigMap 和 Secret

使用ConfigMap 和 Secret 实验目标: 学习如何使用 ConfigMap 和 Secret 来管理应用的配置。 实验步骤: 创建一个 ConfigMap 存储应用配置。创建一个 Secret 存储敏感信息(如数据库密码)。在 Pod 中挂载 ConfigMap 和 Secret&am…

计算机视觉全系列实战教程:(八)图像变换-点运算、灰度变换、直方图变换

图像变换:点运算、灰度变换、直方图变换 1.点运算(1)What(2)Why 2.灰度变换(1)What(2)Why(作用)(3)Which(有哪些灰度变换) 3.直方图修正(1)直方图均衡化 1.点运算 (1)What 通过点运算,输出图像的每个像素的灰度值仅仅取决于输入图像中相对应…

【招联消费金融股份】有限公司2024年5月18日【算法开发岗暑期实习】一面试经验分享

招联消费金融股份有限公司2024年5月18日面试经验分享 面试流程:共30多分钟,先3分钟自我介绍,然后细细介绍简历上面的论文和实习信息。问题1:扩散模型的noise schedule有什么研究。问题2:有哪些常见的数学分布问题3&…

新版嘎嘎快充互联互通系统配置文档

宝塔环境配置 登录宝塔账号,安装nginx、mysql5.7、php7.2、supervisor、redisphp安装扩展: 1)安装swooleloader72 将嘎嘎官方提供的swoole_loader_72_nts.so文件上传到 /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718…

Spring的事务步骤

一、事务处理方案: Spring框架中提供的事务处理方案:一共有两种: 1.适合中小项目使用的, 注解方案: 注解的方式做事务用起来简单,灵活,方便,中小型项目中用它比较方便&#xff0c…

基于STM32和人工智能的智能水质监测系统

目录 引言环境准备智能水质监测系统基础代码实现:实现智能水质监测系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:智能水质管理与优化问题解决方案与优化收尾与总结 1. 引言 随着环境保护意识的提高&#xf…

【C/C++】【学生成绩管理系统】深度剖析

可接各类C/C管理系统课设 目录 实现功能 部分1:系统设置和主菜单 1. 引入头文件 2. 定义结构体 3. 函数声明 4. 主函数 部分2:添加学生信息 部分3:删除学生信息 部分4:修改学生信息 部分5:查询学生信息 部分…

数组元素的内存地址计算【数据结构与算法C#版】

数组元素被存储在连续的内存空间中,这意味着计算数组元素的内存地址非常容易。给定数组内存地址(首 元素内存地址)和某个元素的索引,我们可以使用下方图 所示的公式计算得到该元素的内存地址,从而直接 访问该元素。 观…

电源小白入门学习11——反激电源电路原理

电源小白入门学习11——反激电源、正激电源 隔离电源变压器介绍反激电源 前面我们学习了BUCK、BOOST、BUCK-BOOST 等各种各样的DCDC变换器,但是他们都有一共同的特点,即能量的传输路径时一个完整的通路,输入与输出之间不存在电气隔离&#xf…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串变换(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 字符串变换(100分) 🌍 评测功能需要订阅专栏后私信联系清隆…

【Unity实战篇】| 快速制作一个简易时钟,包括2D和3D时钟

前言 【Unity实战篇】| 快速制作一个时钟,包括2D和3D时钟一、2D时钟制作1.1 钟表盘制作1.2 指针制作1.3 钟表搭建1.4 设置时钟的中心点1.5 时钟旋转逻辑 二、3D时钟制作2.1 搭建表盘和指针2.2 调整指针的位置和节点2.3 时钟旋转逻辑 总结 前言 时钟 这个东西想必不…

JAVA小知识21:单列集合顶层接口Collection的使用

一、Collection简介 Collection是单列集合的顶层接口,所有的单列集合都集成自Collection。 那么什么是单列集合呢?我们上篇文章提到了List与ArrayList,List就是单列集合,他是无需可重复单列集合的顶层抽象类,我们学…

定个小目标之刷LeetCode热题(22)

这道题最容易想的就是排序后再遍历,但是时间复杂度就不是O(n)了,所以还是得用更优的解法,直接看题解,它是使用了HashSet,遍历数组,对于每一个数x,如果不存在x - 1则进入内循环,否则跳…

适合小白学习的项目1906java Web智慧食堂管理系统idea开发mysql数据库web结构java编程计算机网页源码servlet项目

一、源码特点 java Web智慧食堂管理系统是一套完善的信息管理系统,结合java 开发技术和bootstrap完成本系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术 bootstra…

C语言的网络编程

目录 引言 一、TCP/IP概述 1. TCP(Transmission Control Protocol) 2. UDP(User Datagram Protocol) 二、Socket编程基础 1. 服务器端 2. 客户端 三、URL与HTTP编程 1. 使用libcurl进行HTTP请求 表格总结 TCP/IP与Socke…

aop注解快速实现数据脱敏返回

说明: 公司之前数据接口数据管理不严格,很多接口的敏感数据都没有脱敏处理,直接返回给前端了,然后被甲方的第三方安全漏洞扫出来,老板要求紧急处理,常用的话在单个字段上加上脱敏注解会更加的灵活&#xf…

基于Quartus Prime18.1的安装与FPGA的基础仿真(联合Modelsim)教程

Quartus是一种美国科技公司Intel(英特尔)公司开发的FPGA(现场可编辑门阵列)设计编译软件,用作设计、仿真、综合和布局、支持多种编程语言,包括VHDL、Verilog等,并具有丰富的功能和工具库&#x…

SpringCloud学习笔记 - 1、Boot和Cloud版本选型

文章目录 前言需要(学习/用到)的技术SpringBoot版本的选择我们为什么要使用 Java 17,以及SpringBoot 3.2 呢? SpringCloud 版本的选择SpringCloud 命名规则Springcloud Alibaba 版本的选择如何确定Boot,Cloud&#xff…

大模型太贵?找找自己的原因好吧?

什么? 炼个大模型还嫌贵? 到底哪里贵了!? 大模型算力贵?哪里贵了!? 争先恐后训练大模型, 搞得现在“算力慌”“一卡难求”, 算力当然水涨船高了! “特供版”GPU又…