Android 富文本TextView

2019-01-11  本文已影响0人  红酥手黄藤酒丶

Android 富文本TextView

项目中总会遇到一段文字中,部分文字颜色不同,字体大小不同,使用 CharacterStyle 的一系列的子类可以完美实现该效果。

SpannableStringBuilder 主要通过使用 setSpan 方法来改变文本样式。

准备封装一个富文本 TextView。


package com.ecoproaims.handheldpesticidemanagement.utils.widget

import android.content.Context
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.style.CharacterStyle
import android.util.AttributeSet
import android.widget.TextView

/**
 * create by zyf on 2019/1/10 3:53 PM
 */
class RichText : TextView {

    constructor(context: Context) : this(context, null) {
    }


    constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) {

    }

    constructor(context: Context, attrs: AttributeSet?, defstyleAttr: Int) : super(context, attrs, defstyleAttr) {

    }


    fun setSpan(beginIndex: Int, endIndex: Int, vararg style: CharacterStyle) {
        val builder: SpannableStringBuilder = SpannableStringBuilder(text)
        style.forEach {
            builder.setSpan(it, beginIndex, endIndex, Spannable.SPAN_EXCLUSIVE_INCLUSIVE)
        }

        text = builder
    }

    fun setSpan(mText: String, beginIndex: Int, endIndex: Int, vararg style: CharacterStyle) {
        val builder: SpannableStringBuilder = SpannableStringBuilder(mText)
        style.forEach {
            builder.setSpan(it, beginIndex, endIndex, Spannable.SPAN_EXCLUSIVE_INCLUSIVE)
        }

        text = builder
    }

}
上一篇 下一篇

猜你喜欢

热点阅读