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

2024-06-17 11:28

本文主要是介绍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的官方示例

 本示例的工程地址

这篇关于Android开发系列(二)Jetpack Compose 之Text控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069312

相关文章

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF