当前位置: 首页 > news >正文

修改Textview中第一个字的字体,避免某些机型人民币¥不显示

 在 Android 中,系统提供了三种常用的字体类型,分别是:

  1. Serif(衬线字体):

    • 这种字体有明显的衬线或笔画末端装饰,通常用于印刷品和书籍,给人一种正式和优雅的感觉。
    • 示例:Typeface.SERIF
  2. Sans Serif(无衬线字体):

    • 这种字体没有衬线,线条更简单、更干净,通常用于数字界面,因其可读性较高而被广泛使用。
    • 示例:Typeface.SANS_SERIF
  3. Monospace(等宽字体):

    • 在这种字体中,每个字符占据相同的水平空间,通常用于代码编辑器、终端窗口和计算机编程,因为它可以让对齐代码变得更加容易。
    • 示例:Typeface.MONOSPACE

默认字体通常是 Sans Serif 。部分设备默认字体无法显示人民币¥的符号(即使使用半角)

此时尝试修改字体,使得符号能够展现

val text = "¥9.0元"
if (Build.MODEL == "xxx"){mTv.text = TypefaceChangeUtils().getTypefaceText(text, 0, 1, Typeface.MONOSPACE)
}else{mTv.text = text
}


import android.graphics.Typeface
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.TextPaint
import android.text.style.MetricAffectingSpanclass TypefaceChangeUtils {fun getTypefaceText(text: CharSequence, start: Int, end: Int, typeface: Typeface) : CharSequence{if (text.isNullOrBlank()){return SpannableStringBuilder("")}else if (start < 0 || end > text.length || start > end){return SpannableStringBuilder("")}// 创建 SpannableStringBuilderval builder = SpannableStringBuilder(text)// 将第一个字符设置为 Monospace 字体// Spannable.SPAN_EXCLUSIVE_EXCLUSIVE 表示当改变文本时,该样式不会向前或向后扩展。builder.setSpan(object : MetricAffectingSpan() {override fun updateDrawState(tp: TextPaint) {tp.typeface = typeface}override fun updateMeasureState(paint: TextPaint) {paint.typeface = typeface}}, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)return builder}}

http://www.lryc.cn/news/494217.html

相关文章:

  • 彻底理解quadtree四叉树、Octree八叉树 —— 点云的空间划分的标准做法
  • Python时间序列优化之道滑动与累积窗口的应用技巧
  • Buffered 和 BuffWrite
  • 【娱乐项目】基于cnchar库与JavaScript的汉字查询工具
  • 泷羽sec-蓝队基础之网络七层杀伤链 (下)学习笔记
  • FPGA 开发工程师
  • 【Leetcode 每日一题】3250. 单调数组对的数目 I
  • 较类中的方法和属性比较
  • nVisual可视化资源管理工具
  • 自动类型推导(auto 和 decltype)
  • 新型大语言模型的预训练与后训练范式,谷歌的Gemma 2语言模型
  • 基于投影寻踪博弈论-云模型的滑坡风险评价
  • WRF-Chem模式安装、环境配置、原理、调试、运行方法;数据准备及相关参数设置方法
  • Spring中每次访问数据库都要创建SqlSession吗?
  • 力扣刷题TOP101:6.BM7 链表中环的入口结点
  • 浅谈telnet和ping
  • P4-3【应用数组进行程序设计 | 第三节】——知识要点:字符数组
  • 彻底理解微服务配置中心的作用
  • SpringBoot开发——详细讲解 Spring Boot 项目中的 POM 配置
  • pyspark实现基于协同过滤的电影推荐系统
  • 视觉语言模型(VLM)学习笔记
  • 学习笔记:黑马程序员JavaWeb开发教程(2024.11.29)
  • 文档加密怎么做才安全?
  • 使用Setup Factory将C#的程序打包成安装包
  • 解决 java -jar 报错:xxx.jar 中没有主清单属性
  • Java HashSet 介绍
  • 2024年几款免费的AI对话工具介绍
  • Gazebo构建模型(含GNSS、IMU、LiDAR、Camera传感器)
  • #Js篇: 链式判断运算符 ?.和Null判断运算符 ??和逻辑赋值运算符||= = ??=
  • IDEA敲Web前端快捷键