安卓随进度条覆盖住的文字颜色发生改变

时间: 2023-12-07 09:04:37 浏览: 29
在 Android 中,可以使用 SpannableString 和 SpannableStringBuilder 来实现对文字的格式化和样式设置。因此,可以通过在进度条上覆盖一个 TextView,并在更新进度的同时,动态设置 TextView 中文字的颜色和样式,来实现随进度条覆盖住的文字颜色发生改变。 以下是一个简单的示例代码: 1. 在布局文件中添加 ProgressBar 和 TextView,将 TextView 放在 ProgressBar 上方: ``` <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="10dp" android:max="100" android:progress="50"/> <TextView android:id="@+id/progress_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="50%" android:textAlignment="center"/> </LinearLayout> ``` 2. 在代码中,获取 ProgressBar 和 TextView 对象,并设置 ProgressBar 的 OnSeekBarChangeListener,监听进度的变化: ``` ProgressBar progressBar = findViewById(R.id.progress_bar); TextView progressText = findViewById(R.id.progress_text); progressBar.setOnSeekBarChangeListener(new ProgressBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(ProgressBar progressBar, int progress, boolean fromUser) { // 更新 TextView 中的文字和颜色 String text = String.format(Locale.getDefault(), "%d%%", progress); SpannableStringBuilder builder = new SpannableStringBuilder(text); ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED); builder.setSpan(colorSpan, 0, text.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); progressText.setText(builder); // 更新进度条的进度 progressBar.setProgress(progress); } @Override public void onStartTrackingTouch(ProgressBar progressBar) { } @Override public void onStopTrackingTouch(ProgressBar progressBar) { } }); ``` 在 onProgressChanged 回调方法中,首先根据进度值更新 TextView 中的文字,将文字格式化为带百分号的字符串,并使用 SpannableStringBuilder 设置颜色。然后再通过 setText 方法将格式化后的文字设置到 TextView 中。 最后,再更新进度条的进度值即可。

相关推荐

最新推荐

recommend-type

Android实现多段颜色进度条效果

主要为大家详细介绍了Android实现多段颜色进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Android 七种进度条的样式

在开发中我们经常要用到进度条显示下载或者加载的进度。系统自带的黄色进度条在UI效果上经常不能满足策划...这就要我们屌丝程序员自己自定义进度条,下面小编给大家介绍Android 七种进度条的样式,需要的朋友可以参考下
recommend-type

Android实现进度条(ProgressBar)的功能与用法

主要为大家详细介绍了Android实现进度条(ProgressBar)的功能与用法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

iOS实现音频进度条效果

主要介绍了ios实现音频进度条效果,本文写了一个小demo通过实例代码相结合的形式给大家详细介绍,需要的朋友可以参考下
recommend-type

Vue实现带进度条的文件拖动上传功能

主要介绍了Vue实现带进度条的文件拖动上传功能,本文通过实例代码给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

云原生架构与soa架构区别?

云原生架构和SOA架构是两种不同的架构模式,主要有以下区别: 1. 设计理念不同: 云原生架构的设计理念是“设计为云”,注重应用程序的可移植性、可伸缩性、弹性和高可用性等特点。而SOA架构的设计理念是“面向服务”,注重实现业务逻辑的解耦和复用,提高系统的灵活性和可维护性。 2. 技术实现不同: 云原生架构的实现技术包括Docker、Kubernetes、Service Mesh等,注重容器化、自动化、微服务等技术。而SOA架构的实现技术包括Web Services、消息队列等,注重服务化、异步通信等技术。 3. 应用场景不同: 云原生架构适用于云计算环境下的应用场景,如容器化部署、微服务
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。