美文网首页安卓开发Android 开发技术分享
textview文字显示不同大小,中间带横线等功能实现

textview文字显示不同大小,中间带横线等功能实现

作者: 徐子念 | 来源:发表于2019-10-24 18:25 被阅读0次
    image

    如上图所示这两种效果,我想在大家开发过程中应该也会碰到。我这边写一个简单的实现效果供大家借鉴,或者有好的实现方法可以一起分享一下。

    image

    文字显示不同大小功能实现:

    图片.png
    public class TextPriceFormatUtils {
    
    
        /**
         * 小数点前后大小不一致
         *
         * @param value
         * @return
         */
        public static SpannableString format(String value) {
    
            if (TextUtils.isEmpty(value)) {
                return new SpannableString(value);
            }
            if (!value.contains("¥")) {
                value = "¥" + value;
            }
            SpannableString spannableString = new SpannableString(value);
            if (value.contains(".")) {
                spannableString.setSpan(new RelativeSizeSpan(0.77f), value.indexOf("."), value.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
    
            if (value.contains("¥")) {
                spannableString.setSpan(new RelativeSizeSpan(0.77f), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
    
            return spannableString;
        }
    }
    
    

    上面这个封装的utils大家可以再加一些参数,比如大小文字,字号比例大小,上面代码中的0.77f是项目中3980字段为18sp,小数点后00为14sp。

    没错实现主要是通过SpannableString ,那么就很有必要了解Spanned几种类型的区别了

    Spanned的flag一般有以下四种:

    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE — 不包含两端start和end所在的端点
    Spanned.SPAN_EXCLUSIVE_INCLUSIVE — 不包含端start,但包含end所在的端点
    Spanned.SPAN_INCLUSIVE_EXCLUSIVE — 包含两端start,但不包含end所在的端点
    Spanned.SPAN_INCLUSIVE_INCLUSIVE— 包含两端start和end所在的端点
    

    最后textview设置:

     SpannableString spannableString = TextPriceFormatUtils.format("¥3980.00");
     textview.setText(spannableString);
    

    文字中间横线功能实现:

    图片.png

    上面这个就比较简单了:

    textview.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
    

    一行代码搞定。。。
    不过一些常用的paint的flag还是有必要了解一下的:

    Paint.ANTI_ALIAS_FLAG :抗锯齿标志
    Paint.UNDERLINE_TEXT_FLAG : 下划线
    Paint.STRIKE_THRU_TEXT_FLAG : 中划线
    Paint.FAKE_BOLD_TEXT_FLAG : 加粗
    

    至此,完成了我们想要的效果。

    原创,转载请注明出处:https://www.jianshu.com/p/613c0d80d49b

    相关文章

      网友评论

        本文标题:textview文字显示不同大小,中间带横线等功能实现

        本文链接:https://www.haomeiwen.com/subject/iypdvctx.html