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

TextView中使用一个字符串替换字符串str中start到end的子字符串(终极版)

转载请注明出处,谢谢!我之前写过一篇textview字符串替换的文章,但是那个并不完善,例如会有接不上的现象,在某些机型上会出现重叠等等下面是我彻底解决这些问题的方案sb.setSpan(newRe

转载请注明出处,谢谢!

我之前写过一篇textview字符串替换的文章,但是那个并不完善,例如会有接不上的现象,在某些机型上会出现重叠等等

下面是我彻底解决这些问题的方案

sb.setSpan(new ReplacementSpan() {

@Override
public int getSize(Paint paint, CharSequence text, int start, int end,
FontMetricsInt fm) {
//最后一个参数为end-1,防止这个span最后与下一个字符之间有空格
if (fm != null) {
paint.getFontMetricsInt(fm);
}
return (int) paint.measureText(text, start, end);
}

@Override
public void draw(Canvas canvas, CharSequence text, int start, int end,
float x, int top, int y, int bottom, Paint paint) {
// String newText = "****" + text.toString().substring(start + 4, end);
paint.setUnderlineText(true);
paint.setColor(linkColor);
canvas.drawText("****", 0, end - start, x, y, paint);
}
}, start, start + 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
在画这个span之前要先设置覆盖的那几个字符typeface是monospace(等宽字符)的,不然就会出现空格、重叠等现象

代码如下:

sb.setSpan(new TypefaceSpan("monospace"), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
里面传入的变量同学们可以根据自己的需求做相应的修改


推荐阅读
  • 概述Android开发过程中,经常遇到Textview展示不完全的情况。遇到此情况,通常的处理是:方案一Textview添加android:ellipsize属性,让展示不 ... [详细]
  • 如何在Android中利用TextView对字体颜色进行更改?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希 ... [详细]
  • 首先申明,这篇文章不是我写的,我是对着大神的博客,对着写了一遍而已!感谢写这篇文章的作者,其原创博客地址为:http:www.jianshu.comp4d987769785 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 实现时主要问题在于怎么将所有对象给找出来,替换成user.name的形式。Overridepublicvoidsave(Comme ... [详细]
  • [刷题] LeetCode 3 Longest Substring Without Repeating Character
    要求在一个字符串中寻找没有重复字母的最长子串思路滑动窗口如果当前窗口没有重复字母,j右移,直到包含重复字母i右移,直到不包含重复字母用数组记录字母是否出现过,判断重复实现1clas ... [详细]
  • 1.范例说明EditTextWidget设计的初衷是为了等待User输入而准备的,那么在User输入的同时,又该如何拦截所输入的文字呢?Android的多数Widget都有 ... [详细]
  • TextView属性详解:autoLink设置  是否当文本为URL链接email电话号码map时,文本显示为可点击的链接。可选值(nonewebemailphonema ... [详细]
  • Android TextView 设置多种颜色
    关键词Android、TextView、多种颜色摘要由于项目开发需要,一个TextView为了强调内容,需要显示不同的字体颜色和大小效果图TextView效果图.png方法一int ... [详细]
  • Android TextView预渲染研究
    AndroidTextView预渲染研究-Android中的TextView是整个framework中最复杂的控件之一,负责Android中显示文本的大部分工作,framwork中 ... [详细]
  • Android TextView利用measureText自适应文本字体大小宽度
    AndroidTextView利用measureText自适应文本字体大小宽度常常有这种情况,UI设计师限定一个文本TextView的宽度值比如80dip,但是该文本长度 ... [详细]
  • 上节课,介绍了TextView的简单使用,包括在xml文件静态设置TextView的属性和文本内容信息,以及在java代码中动态的改变一个TextView所要显示的内容。掌握了基本使用之后,我们来看 ... [详细]
  • Android TextView设置不同的颜色字体
    AndroidTextView设置不同的颜色字体-这里记录一个比较方便的方式来解决Textview设置不同颜色的字体的方法。可能第一反应是布局的嵌套,这个方法肯定可以啊,但是肯定不 ... [详细]
author-avatar
Eva---LiuJ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有