Android ReplacementSpan 文字对齐问题

原创 2017年06月14日 17:50:32

项目中需要在TextView中高亮显示‘@人员的名称’,实现方法采用自定义ReplacementSpan,遇到高亮的文字与文本对齐问题。

解决方案:
ReplacementSpan的draw方法实现

@Override
    public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NonNull Paint paint) {
        if(!TextUtils.isEmpty(mUserName)){
            canvas.save();
            int color = paint.getColor();
            if(mColor != 0) {
                paint.setColor(mColor);
            }
            //@文字对齐
            int transY = bottom - y;
            transY -= paint.getFontMetricsInt().descent;
            canvas.translate(0,transY);
            canvas.drawText(mUserName,0,mUserName.length(),x,y,paint);
            paint.setColor(color);
            canvas.restore();
        }
    }

其中mUserName就是要显示的‘@人员的名称’

版权声明:本文为博主原创文章,未经博主允许不得转载。

TextView里画世界——ReplacementSpan实践

相信很多同学都多多少少接触过一些常用的Span,例如,用于设置TextView里某段文字字体大小的AbsoluteSizeSpan,可以改变背景颜色的BackgroundColorSpan,还有可以直...

Android Span 进阶

在上篇文章《Android Span 架构介绍》,我们讲述了Android Span的基本概念和用法,这篇文章我们就来扩展一下我们对Android Span的了解,这一定会使你感到惊奇的,惊叹Andr...

Android开发之SpannableString详解

在实际的应用开发过程中经常会遇到,在文本的不同部分显示一些不同的字体风格的信息如:文本的字体、大小、颜色、样式、以及超级链接等。一般情况下,TextView中的文本都是一个样式,对于类似的情况,可以借...

Android自定义圆角Span背景

在Android开发中,有时候需要对TextView中文字进行特殊化处理,例如给局部文字设置超链接、颜色、字体,背景色等。文主要讲了怎么自定义圆角背景Span,同时讲述了ReplacementSpan...

【Android】TextView中不同大小字体如何上下垂直居中?

前言在客户端开发中,我们往往需要对一个TextView的文字的部分内容进行特殊化处理,比如加粗、改变颜色、加链接、下划线等。iOS为我们提供了AttributedString,而Android则提供了...

实现TextView 文字排版,分散两端对齐

参考:http://www.cnblogs.com/lcyty/p/3265335.html 方法一:使用HTML TextView textview=(TextView)findVi...
  • mxbhxx
  • mxbhxx
  • 2014年06月04日 11:09
  • 6578

调用系统相机拍照--是配到android-7.0

一:获取缩放图直接调用相机拍照,无需人和权限,但是缺点是只能获取到缩放图(不清晰的哦,一般不采用这种) /** * 缩放图 */ mT...

Android 解决图文混排,图片和文字居中对齐问题(ImageSpan)

一. 概述众所周知,Android图文混排可以通过SpannableString来实现,通过在相应位置使用ImageSpan替换即可,但是使用过的人会发现,imageSpan只提供了两种对齐方式,如下...

Android textview文字对齐换行问题

今天忽然发现android项目中的文字排版参差不齐的情况非常严重,不得不想办法解决一下。经过研究之后,终于找到了textview自动换行导致混乱的原因了----半角字符与全角字符混乱所致!一般情况下,...

Android:ListView中包含EditText 文字冲突 复用 焦点 软键盘问题

核心代码:getView中: //为了避免输入框监听的冲突,解绑监听 if(viewHolder.editText.getTag() instanceof TextWatch...
  • fenlyer
  • fenlyer
  • 2017年06月27日 10:33
  • 242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android ReplacementSpan 文字对齐问题
举报原因:
原因补充:

(最多只允许输入30个字)