Jetpack:005-文本组件的扩展

news2024/11/19 10:40:34

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 可以选择的文本
    • 2.2 可以点击的文本
    • 2.3 多种形式的文本
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了Jetpack中文本组件的使用方法,本章回中主要介绍 文本组件的扩展。闲话休提,让我们一起Talk Android Jetpack吧!

1. 概念介绍

我们在本章回中介绍的内容还围绕文本组件,我们主要介绍如何扩展文本组件,扩展主要分三个方面:可以选择的文本,可以点击的文本,多种形式的文本。下面是详细的的描述:

  • 可以选择的文本:表示文本内容可以被选择,常用的操作是先选择然后复制文本;
  • 可以点击的文本:表示文本内容可以响应点击事件,当点击文本后会对点击事件进行响应;
  • 多种形式的文本:表示同一文本组件中包含不同的文本样式,类似多个文本拼接在一起;

2. 使用方法

2.1 可以选择的文本

对文本组件的这种扩展由SelectionContainer组合函数和Text组合函数共同完成,它的用法和正常的文本组件用法相同,只需要在文本组件外层嵌套一个SelectionContainer组件就可以,我们将在后面的小节中通过示例代码来演示具体的用法。

2.2 可以点击的文本

对文本组件的这种扩展由ClickableText组合函数实现,该函数包含两个重要的参数,详细如下:

  • text参数:用来存放文本组件中显示的内容;
  • onClick参数:它是方法类型,用来响应点击文本的事件;

2.3 多种形式的文本

对文本组件的这种扩展由AnnotationText类型的文本实现,把该类型的文本直接赋值给文本组件的text参数就可以。在创建该类型的文本时需要借助buildAnnotatedString函数,该函数和withStyle组合函数配合使用,可以创建多种不同风格的文本,我们将在后面的小节中通过示例代码来演示具体的用法。

3. 示例代码

//可以选择的文本,主要是嵌套了一个SelectionContainer函数
SelectionContainer() {
    Text(text = "click me and then selected")
}

//多种形式的文本
Text(text = buildAnnotatedString {
    withStyle( style = SpanStyle(color = Color.Red, fontSize = 12.sp)) {
        append("part1")
    }

    withStyle( style = SpanStyle(color = Color.Green, fontSize = 22.sp)) {
        append("part2")
    }

    withStyle( style = SpanStyle(color = Color.Blue)) {
        append("part3")
    }
})


//可以点击的文本
val annotationText = buildAnnotatedString {
    withStyle(style = SpanStyle(fontSize = 24.sp)) {
        append("url:")
    }

    withStyle(
        style = SpanStyle(color = Color.Red, textDecoration = TextDecoration.Underline)
    ) {
        pushStringAnnotation(
            tag = "URL",
            annotation = "www.baidu.com",
        )
        append("address")
        pop()
    }
}

ClickableText(text = annotationText,
    onClick = {
            offset -> annotationText.getStringAnnotations(
        tag = "URL",
        start = offset,
        end = offset
    ).toString()
        Log.d("tag","text is clicked : ${annotationText.toString()}")
    }
)

在上面的代码中创建了三种扩展文本,编译并且运行上面的代码可以得到下面的运行结果:
在这里插入图片描述

其中可以选择的文本和多种形式的文本可以直接在图片中看到,可以点击的文本需要点击文本,此时会输出log。建议大家结合上面的代码自己动手去实践一下。

4. 内容总结

文本组件是程序中常用的组件,我们可以对它进行扩展以适应不同的需求,最后,我们对这些扩展做一个总结:

  • 可以选择的文本:表示文本内容可以被选择,通过SelectionContainer组合函数实现;
  • 可以点击的文本:表示文本内容可以响应点击事件,通过ClickableText组合函数实现;
  • 多种形式的文本:表示同一文本组件中包含不同的文本样式,通过AnnotationText类型的文本实现;

看官们,关于Jetpack中文本组件的扩展就介绍到这里,欢迎大家在评论区交流与讨论!

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

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

相关文章

【深度学习实验】循环神经网络(二):使用循环神经网络(RNN)模型进行序列数据的预测

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. RNN模型 a. 初始化__init__ b. 前向传播方法forward 2. 训练和预测 a. 超参数 b. 创建模型实例 c. 模型训练 d. 预测结果可视化 3. 代码整合 经验是智慧之父…

云服务器带宽对上传下载速度的影响

简单来说就是 云服务器收到数据代表入&#xff0c;带宽大小 < 10时&#xff0c;入带宽大小10 带宽大小 > 10时&#xff0c;出入带宽上限 等于实际购买时候的大小

2023Linux C/C++全栈开发知识技术合集(基础入门到高级进阶)

C/Linux服务器开发」别名可以叫「C后台开发」,目前BAT里面都是有大量的C开发岗位&#xff0c;鹅厂在c后台开发岗都是急需。虽然岗位对技术要求难度系数较高&#xff0c;但是有大厂情结的朋友们还是可以冲一冲的。 很多有c/c语言基础的朋友&#xff0c;在面试后台岗的时候都会有…

Response Status Code 301、302

目录 Information Django redirect Influence Information HTTP状态码301、302和304分别表示以下情况&#xff1a; codeinformation301&#xff08;Moved Permanently&#xff09; 永久重定向。当请求的资源已经被永久地移动到了一个新的URI时&#xff0c;服务器会返回这个…

登录认证,登录校验

一、基础登录功能 1.Controller层 import com.itheima.pojo.Emp; import com.itheima.pojo.Result; import com.itheima.service.EmpService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework…

ChatGLM2-6B微调实践-QLora方案

ChatGLM2-6B微调实践-QLora方案 环境部署Lora微调项目部署准备数据集修改训练脚本adapter推理模型合并与量化合并后的模型推理 参数调优微调过程中遇到的问题参考&#xff1a; 环境部署 申请阿里云GPU服务器&#xff1a; CentOS 7.6 64Anaconda3-2023.07-1-Linux-x86_64Pytho…

为什么力扣中std::sort的cmp函数不加static会出错?

今天在力扣上做题的时候出现了一个有意思的错误 题目&#xff1a;1005.K 次取反后最大化的数组和 错误信息&#xff1a;error: reference to non-static member function must be called sort(nums.begin(),nums.end(),cmp); 我自定义了sort的cmp函数&#xff0c;但是出错了…

计算时间复杂度

时间复杂度与语句被重复执行的次数息息相关。 一、单层循环 单层循环大致可以分为两种&#xff0c;一种是循环体内的语句不影响循环条件的判定。另一种就是循环体内的语句会影响循环条件的判定。 1、循环体内的语句不影响循环条件的判定 这种情况十分常见且简单&#xff0c…

Configuration Change派发到App进程

整体时序 // DisplayContent.java boolean updateDisplayOverrideConfigurationLocked(Configuration values,ActivityRecord starting, boolean deferResume,ActivityTaskManagerService.UpdateConfigurationResult result) {int changes 0;boolean kept true;mAtmService.d…

VUEX全网最详细讲解之一

目录 一.Vuex简介 二.vuex的存值取值 测试结果 三.vuex异步请求 测试结果 ​编辑 ​编辑 一.Vuex简介 Vuex 是一个用于 Vue.js 应用程序的状态管理模式和库。它以集中式存储管理应用的所有组件的状态&#xff0c;并提供可预测的状态变化。Vuex 主要解决了多个组件之间共享…

Springboot——集成jodconverter做文档转换

文章目录 前言jodconverter 简介下载安装 libreoffice代码演示1、创建springboot项目工程并引入依赖2、配置3、准备一个docx模板4、编写测试代码 运行后的样式linux 环境下安装 libreoffice 前言 公司项目开发中&#xff0c;早期使用docx4j进行word转pdf&#xff0c;出现了很多…

嵌入式养成计划-39----C++静态成员--继承--多继承

九十一、静态成员 静态成员变量是属于类的变量&#xff0c;而不是属于类的对象的。它们在类的所有实例中是共享的。它们具有类范围的生命周期&#xff0c;因此与全局变量有一些相似之处。 在数据成员前static ----->静态数据成员 在成员函数前static ------>静态成员函…

接口自动化测试 —— 工具、请求与响应

1.工具介绍 postman &#xff1a;很主流的API测试工具&#xff0c;也是工作里面使用最广泛的研发工具。 JMeter&#xff1a; ApiPost&#xff1a; 2.安装postman&#xff1a; 安装好直接打开&#xff0c;不用注册。 二、通信模式&#xff1a; 1、同步通信&#xff1a; …

【走方格的方案数】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 #include <iostream> using namespace std; int func(int m,int n) {if(m1||n1){return mn;}return func(m-1,n)func(m,n-1); } int main() {int m, n;while (cin >>m >>…

word行距怎么设置?专业排版,让文档更具吸引力!

Microsoft Word是最常用的文字处理工具之一&#xff0c;广泛用于学术写作、商务沟通和文档编辑。掌握Word的基本功能是高效使用它的关键。本文将介绍word行距怎么设置的3种方法&#xff0c;以确保您的文档格式清晰、易读&#xff0c;让您的文档更具吸引力&#xff01; 方法1&am…

C++ 命名空间-----namespace(超详细解析,小白必看系列)

目录 一、前言 &#x1f34e;什么是C 二、关键字 三、命名空间&#xff08;重点&#xff09; &#x1f350;C语言--命名冲突 &#x1f349;C--命名空间的定义 &#x1f353;C--命名空间的使用 四、C输入&输出 五、共勉 一、前言 既博主学过C语言后又一新的语言&a…

动手学强化学习第2章多臂老虎机

2.1简介 多臂老虎机问题可以被看作简化版的强化学习问题。但是其只有动作和奖励没有状态信息&#xff0c;算是简化版的强化学习问题。 2.2问题介绍 2.2.1问题定义 在多臂老虎机(MAB)问题中&#xff0c;有一个有K根拉杆的老虎机&#xff0c;拉动每一根拉杆都对应一个关于奖励…

简单使用 Hugo 博客

之前用过 hugo&#xff0c;本次来分享一波&#xff0c;确实简单好用&#xff0c;可以持续使用&#xff0c;尤其是喜欢 GO语言的同学 hugo Hugo是一个用 Go语言 编写的静态网站生成器&#xff0c;可以快速地生成高效、安全和易于管理的静态网站。Hugo具有速度快、可定制性强、…

Linux引导故障排除:从问题到解决方案的详细指南

1 BIOS初始化 通电->对硬件检测->初始化硬件时钟 2 磁盘引导及其修复 2.1 磁盘引导故障 磁盘主引导记录&#xff08;MBR&#xff09;是在0磁道1扇区位置&#xff0c;446字节。 MBR作用&#xff1a;记录grub2引导文件的位置 2.2 修复 步骤&#xff1a;1、光盘进…

Javascript笔记:Web页面中的事件处理

1 任务队列 2事件处理&#xff1a;⼀个只有宏任务的示例 3 Web⻚⾯中的事件处理 3.1 定时器与事件处理&#xff1a;一个实例 4 Web⻚⾯中的事件处理 5 事件在DOM中的传播 5.1 两个阶段