多款式富文本的简练完成
appendableStyleScope
答应你快速构建多种款式文字。
特性
- 支撑关于同一个字符串设置多种款式。
- 支撑文字和图片。
- 供给默认款式。
- 采用 DSL 保证更明晰的款式效果规模
快速开端
下面的示例为你展现了怎么创立一条链接文本。
appendableStyleScope(getBinding().tv) {
withStyle(AppendableStyle(url = "https://www.baidu.com/")) {
append("这是一个链接")
}
}
下面的示例为你展现了怎么创立一条图片文本。
appendableStyleScope(getBinding().tv) {
withImage(ImageSpan(this, R.mipmap.ic_launcher))
}
拼接字符串
下面的示例为你展现怎么创立一条杂乱的富文本字符串。
appendableStyleScope(getBinding().tv) {
withStyle(AppendableStyle(QuoteSpan(ColorUtils.colorHex2Int("#27ae60"), 10, 30))) {
withStyle(AppendableStyle(fontSize = 20F.SP.toInt())) {
appendLine("什么是 Android?")
}
append("一个推翻移动设备功能的平台,你可以访问")
withStyle(AppendableStyle("https://www.android.com/intl/zh-CN_cn/what-is-android/")) {
append("链接")
}
appendLine("来了解更多。")
append(
"从只能让设备运行,到让生活更轻松,都是Android在背面供给强力支撑。" +
"有了Android, 才能让GPS避开拥堵,用手表发短信,让Google助理答复问题。" +
"现在有 25 亿部活跃设备搭载了 Android 操作系统。Android 能够为各种设备" +
"供给强力支撑,从 5G 手机到炫酷的平板电脑,不乏其人。"
)
withStyle(AppendableStyle(ScriptMode.SUPERSCRIPT)) { append("[1]") }
append("\n")
withImage(ImageSpan(this@DateActivity, R.drawable.android_logo))
}
}
通用款式
通过指定 AppendableStyle
内的 backColor
特点,可认为字符串设置背景色。现在 AppendableStyle
答应你指定以下特点:
- foreColor : 文字色彩。
- backColor : 文字背景色。
- fontStyle : 文字风格,现在支撑粗体、斜体或许正常。
- fontFamily : 文字字体。
- fontSize : 文字大小。
- fontAlign : 文字对齐方法。
- proportion : 文字扩大份额,例如假如扩大 50% ,则该特点设置为 1.5f 。
- xProportion : 值 > 1.0 会将文本拉伸得更宽。值 < 1.0 会将文本拉伸得更窄。
appendableStyleScope(getBinding().tv) {
withStyle(AppendableStyle(url = "https://www.baidu.com/", backColor = R.color.lightslategray)
) {
append("这是一个链接")
}
}
特别款式
除了通用款式,你也可认为文字指定以下仅有的特别款式,现在支撑:
链接文字
appendableStyleScope(getBinding().tv) {
withStyle(AppendableStyle(url = "https://www.baidu.com/")) {
append("这是一个链接")
}
}
首行缩进
appendableStyleScope(getBinding().tv) {
withStyle(AppendableStyle(linesIndent = LeadingMarginSpan.Standard(100, 0))) {
append("这是一段带首行缩进的文本哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。")
}
}
携带子弹点
appendableStyleScope(getBinding().tv) {
withStyle(
AppendableStyle(bulletSpan = BulletSpan(10, ColorUtils.colorHex2Int("#d63031"), 10))
) {
append("这是一段带子弹点的文字。")
}
}
引证文字
appendableStyleScope(getBinding().tv) {
withStyle(
AppendableStyle(quoteSpan = QuoteSpan(ColorUtils.colorHex2Int("#f0932b"), 10, 10))
) {
append("这是一段引证文字。")
}
}
删除线或许下划线
appendableStyleScope(getBinding().tv) {
withStyle(
AppendableStyle(strikeMode = StrikeMode.STRIKETHROUGH)
) {
append("这是一段带删除线的文字。")
}
withStyle(
AppendableStyle(strikeMode = StrikeMode.UNDERLINE)
) {
append("这是一段带下划线的文字。")
}
}
上标或许下标
appendableStyleScope(getBinding().tv) {
withStyle { append("这是一段带上标的文字。") }
withStyle(AppendableStyle(scriptMode = ScriptMode.SUPERSCRIPT)) {
append("[1]")
}
}
规模含糊
appendableStyleScope(getBinding().tv) {
withStyle(
AppendableStyle(blurRadius = 5f, blur = BlurMaskFilter.Blur.NORMAL)
) {
append("这是一段带含糊的文字。")
}
}
可点击文字
该项不供给示例。
源代码
你可以点击 AppendableStyleString 来检查源码,这个仓库也包含了我封装的其他东西,假如你喜爱的话,还期望能够star,fork和提出issue。