public class RadiusBackgroundSpan extends ReplacementSpan {

private int mColor;

private int mTvColor;

private int mTvSize;

/**

* @param color  背景颜色

* @param tvColor 需要改变文字颜色吗

* @param tvSize  需要改变文字大小吗

*/

public RadiusBackgroundSpan(int color, int tvColor, int tvSize) {

mColor = color;

mTvColor = tvColor;

mTvSize = tvSize;

}

@Override

public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {

//mSize就是span的宽度,span有多宽,开发者可以在这里随便定义规则

//我的规则:这里text传入的是SpannableString,start,end对应setSpan方法相关参数

//可以根据传入起始截至位置获得截取文字的宽度,最后加上左右两个圆角的半径得到span宽度

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) {

paint.setColor(mColor);//设置背景颜色

//            paint.setAntiAlias(true);// 设置画笔的锯齿效果

int bgPainth = Math.round(paint.getFontMetrics().descent - paint.getFontMetrics().ascent);

int bgSize = getSize(paint, text.subSequence(start, end), start, end, paint.getFontMetricsInt());

RectF oval =new RectF(x, y + paint.ascent(), x + bgSize, y + paint.descent() /2);

//设置文字背景矩形,x为span其实左上角相对整个TextView的x值,y为span左上角相对整个View的y值。paint.ascent()获得文字上边缘,paint.descent()获得文字下边缘

canvas.drawRoundRect(oval, (y + paint.descent()) /2, (y + paint.descent()) /2, paint);//绘制圆角矩形,第二个参数是x半径,第三个参数是y半径

//我这里是全圆。 你可以自己去根据你需要的。去除以

paint.setColor(mTvColor);//你需要的画笔文字颜色

paint.setTextSize(mTvSize);

int tvPainth = Math.round(paint.getFontMetrics().descent - paint.getFontMetrics().ascent);

int tvSize = getSize(paint, text.subSequence(0, 2), 0, 2, paint.getFontMetricsInt());

canvas.drawText(text, start, end, (bgSize - tvSize) /2, y - (bgPainth - tvPainth) /2 + (bgPainth - y) /2, paint);//绘制文字

}

}

android 背景图片居中显示文字,Android ImageSpan 给文字设置圆角背景 并且文字居中,背景居中。...相关推荐

  1. html select 上下居中显示,在IE8中使用padding设置select控件文字垂直居中

    在火狐.苹果.谷歌.欧鹏等主流浏览器中,select下拉表单的文字能够垂直居中,如图: 而在ie8中,select下拉表单的文字基本就是靠底部显示,如图: 那么,如何使得ie8下的select文字垂直 ...

  2. html如何把图片在背景图一半,img只显示图片一部分 或 css设置背景图片只显示图片指定区域...

    17:14 2016/3/22 img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片 ...

  3. 微信小程序设置背景图片不显示问题解决方法

    最近开发小程序的过程中遇到了这样一个小问题,在wxss文件中通过background设置背景图片,要实现背景图片上显示文字的效果,发现背景图片不显示,设置背景图片的代码如下: .test {width ...

  4. laravel项目中css样式表的背景图片不显示

    刚学laravel,遇到了很多坑,感觉laravel是挺强大的. 建好后台项目,奈何css样式表的背景图片不显示 .mainhd {background: url(../images/sky/body ...

  5. vue打包后CSS中引用的背景图片不显示问题

    vue项目中,在css样式中引用了一张背景图片,开发环境下是可以正常显示,build之后背景图片不显示. 解决方法: 找到build/utils.js文件 修改成为如下所示内容: 添加红框中的内容即可 ...

  6. html背景图片只显示一张图片,img只显示图片一部分 或 css设置背景图片只显示图片指定区域(示例代码)...

    17:14 2016/3/22 img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片 ...

  7. 微信小程序背景图片不显示

    最近学着写了一个微信小程序,可是总是是加载不出背景图片.这里先描述一下问题. 用下面这种办法声明的背景图片在本机和手机上都无法显示. .container { height: 100%; displa ...

  8. 已解决:前、后端打包部署至服务器后,背景图片不显示并且一些图标都变成了方块

    将打包好的jar包部署至服务器后,输入项目网址后,发现背景图片没有显示出来并且一些图标变成了方块. 解决办法:在前端找到bulid文件目录下的utils.js文件,添加以下语句: publicPath ...

  9. css 设置背景图一半_img只显示图片一部分 或 css设置背景图片只显示图片指定区域...

    17:14 2016/3/22 img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片 ...

  10. Qt项目背景图片无法显示

    问题描述: Qt加入背景图片,可运行时背景图片无法显示 这是Qt Designer中的界面,而在运行后背景是一片空白. 原因分析 我开始以为是我的qss代码出错了.当然代码开始也有一点问题,我没有把图 ...

最新文章

  1. 2016多校赛2 A 数学推公式 E 极角排序,组合数(待补) L dp+bitset优化
  2. zTree 异步加载 添加子节点重复问题 .
  3. 【技巧】数组元素相加等于某个目标值,js实现
  4. XMPP协议简单介绍
  5. 子进程 post-installation script 返回了错误号 解决方法
  6. CodeForces 699A Launch of Collider
  7. 得胜php100怎么样,优缺点评测得胜Q麦评价如何?怎么样呢?老司机透漏
  8. 全国计算机技术与软件专业技术资格(水平)考试徽标
  9. zabbix编译安装
  10. Linux入门学习(三)
  11. SharePoint如何模拟用户
  12. 动手学深度学习v2-线性代数课后习题
  13. 计算机考研数据结构答案,计算机考研数据结构试卷八(练习题含答案)
  14. idea 如何clean工程_IDEA中的clean,清除项目缓存图文教程
  15. 公有云、私有云和混合云介绍
  16. 阿里云视频点播一站式解决解决方案怎么样?
  17. 如何设置excel中一部分表格显示但是不打印?
  18. 创新案例分享 | 建设医院绩效管理系统,促进医院健康良性发展
  19. SQLite简介,C#调用SQLite
  20. 【华人学者风采】刘云浩 清华大学

热门文章

  1. android蓝牙多次后,android – 如何防止BluetoothGattCallback一次多次执行
  2. 【ArcGIS微课1000例】0018:ArcGIS设置相对路径和数据源
  3. C#遍历指定文件夹中的所有文件
  4. WireShare抓包在ssl协议里面提示(Level: Fatal, Description: Protocol Version)
  5. Android之使用PopupWindow让背景变黯但是华为手机出现屏幕一闪一闪问题解决办法
  6. python之sys.argv获取命令行的参数
  7. Android之通过ActivityLifecycleCallbacks判断程序是否运行在后台
  8. 【C语言简单说】七:自定义函数(1)
  9. tcp udp区别优缺点_一文搞懂TCP与UDP的区别
  10. java string 数据结构_数据结构---Java---String、StringBuilder、StringBuffer