热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidTextView:实现多彩文字与多样化字体效果

在探讨如何在Android的TextView中实现多彩文字与多样化字体效果时,本文提供了一种不依赖HTML技术的解决方案。通过使用SpannableString和相关的Span类,开发者可以轻松地为文本添加丰富的样式和颜色,从而提升用户体验。文章详细介绍了实现过程中的关键步骤和技术细节,帮助开发者快速掌握这一技巧。

好的,所以我认为这应该是一个相当简单的过程.

我已阅读以下问题:

在所有这些问题和答案中,建议似乎都非常相似.我试图避免使用HTML技术,而是改用SpannableString和SpannableStringBuilder.最终,我希望能够在单个TextView中使用多个不同的字体,但是现在,我只想弄清楚如何使多种颜色起作用.

我正在尝试以这种方式实现这些技术:

// Get a typeface for my custom font

String regularFontPath = "fonts/Abel-Regular.ttf";

Typeface regularTf = Typeface.createFromAsset(getActivity().getAssets(), regularFontPath);

// Set the label's typeface (this part is working)

mItemCodesLabel.setTypeface(regularTf);

// Create a spannable builder to build up my

// TextView's content from data

SpannableStringBuilder builder = new SpannableStringBuilder();

// These colors are defined and working well in other parts of my app

ForegroundColorSpan ltGraySpan = new ForegroundColorSpan(R.color.light_gray);

ForegroundColorSpan dkGraySpan = new ForegroundColorSpan(R.color.dark_gray);

// mCodesList has good data and the actual data output from this

// loop is correct. Just the styling is wrong

for (int i = 0; i

ParseObject code = mCodesList.get(i);

String value = code.getString("value") + " | ";

if (i > 0) {

// I want new codes to be on a new line (this works)

value = "

" + value;

}

SpannableString valueSpan = new SpannableString(value);

valueSpan.setSpan(ltGraySpan, 0, value.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

builder.append(valueSpan);

String loc = code.getString("location");

SpannableString locSpan = new SpannableString(loc);

locSpan.setSpan(dkGraySpan, 0, loc.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

builder.append(locSpan);

}

mItemCodesLabel.setText(builder);

最终结果是TextView包含正确的文本内容. TextView是正确的字体.但是TextView的全部内容都是我的@ color / light_gray颜色.我不确定为什么,因为在XML布局文件中,我指定了@ color / dark_gray颜色(希望通过设置Spannable设置文本来覆盖该颜色).即使我将两个ForegroundColorSpan对象都更改为使用R.color.dark_gray,TextView仍然显示为浅灰色.我没有在代码的其他任何地方设置文本的颜色,所以我真的很茫然.

我在运行4.4.2的LG Optimus G Pro上运行它.我还有另一个TextView,我需要在其中获得多种颜色和字体,甚至在文本的某些部分下划线,所以对我来说这是一个很大的问题.我要去哪里错了?



推荐阅读
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 深入解析 Android TextView 中 getImeActionLabel() 方法的使用与代码示例 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 本文详细介绍了如何在 Android 应用中获取系统的版本号,包括具体的应用场景和实现步骤。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
author-avatar
白羊黔中草
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有