美文网首页
Android:字符串中数字变红和加粗

Android:字符串中数字变红和加粗

作者: 因为我的心 | 来源:发表于2023-01-18 17:24 被阅读0次

    一、前言:

    需求:java 字符串中的数字变红和加粗

    效果图:


    图片.png

    二、实现

    1、调用:

     //设置不同的颜色
     SpannableStringBuilder spannableStringBuilder = SpannableUtils.INSTANCE.getSpannableStringBuilder(activity, title,22);
                                viewHolder.tv_tip.setText(spannableStringBuilder);
    

    2、工具类:

    /**
     * @author lyy
     * @date 2023-01-19
     * 首充0.99返1000书币
     * context:上下文
     * content:内容
     * typeface:字体大小
     */
    object SpannableUtils {
        fun getSpannableStringBuilder(
            context: Context,
            content: String? = null,
            typeface:Int
        ): SpannableStringBuilder? {
            content?.let {
                val regEx = "[^0-9.]+"
                val pattern = Pattern.compile(regEx)
                //用定义好的正则表达式拆分字符串,把字符串中的数字留出来
                val result = pattern.split(it)
                val style = SpannableStringBuilder(it)
                result.forEach { tag ->
                    if (!tag.isNullOrEmpty()) {
                        var start = it.indexOf(tag)
                        //字体大小
                        style.setSpan(
                            AbsoluteSizeSpan(typeface.sp),
                            start,
                            start + tag.length,
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
                        )
                        //字体颜色
                        style.setSpan(
                            ForegroundColorSpan(context.resources.getColor(R.color.Orgin2)),
                            start,
                            start + tag.length,
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
                        )
    
                        //字体加粗
                        style.setSpan(
                            StyleSpan(Typeface.BOLD),
                            start,
                            start + tag.length,
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
                        )
                    }
                }
                return style
            }
            return null
        }
    
    }
    

    3、扩展类

    /**
     * 正常编码中一般只会用到 [dp]/[sp] ;
     * 其中[dp]/[sp] 会根据系统分辨率将输入的dp/sp值转换为对应的px
     */
    val Float.dp: Float                 // [xxhdpi](360 -> 1080)
        get() = android.util.TypedValue.applyDimension(
            android.util.TypedValue.COMPLEX_UNIT_DIP, this, Resources.getSystem().displayMetrics
        )
    
    val Int.dp: Int
        get() = android.util.TypedValue.applyDimension(
            android.util.TypedValue.COMPLEX_UNIT_DIP,
            this.toFloat(),
            Resources.getSystem().displayMetrics
        ).toInt()
    
    
    val Float.sp: Float                 // [xxhdpi](360 -> 1080)
        get() = android.util.TypedValue.applyDimension(
            android.util.TypedValue.COMPLEX_UNIT_SP, this, Resources.getSystem().displayMetrics
        )
    
    
    val Int.sp: Int
        get() = android.util.TypedValue.applyDimension(
            android.util.TypedValue.COMPLEX_UNIT_SP,
            this.toFloat(),
            Resources.getSystem().displayMetrics
        ).toInt()
    

    参考:https://www.jianshu.com/p/fff9e5667014/

    相关文章

      网友评论

          本文标题:Android:字符串中数字变红和加粗

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