ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

一行代码写出富文本:Android-Extensions流畅SpannableString API完全指南

一行代码写出富文本:Android-Extensions流畅SpannableString API完全指南 一行代码写出富文本Android-Extensions流畅SpannableString API完全指南【免费下载链接】Android-ExtensionsAn Android library with modules to quickly bootstrap an Android application.项目地址: https://gitcode.com/gh_mirrors/an/Android-ExtensionsAndroid-Extensions 是一个帮助开发者快速搭建 Android 应用的开源模块集合其中的core 模块提供了一套流畅Fluent的SpannableString 富文本 API给任意字符串追加.bold()、.color()、.underline()等一行式扩展方法即可完成加粗、变色、下划线等富文本样式彻底告别手写setSpan的繁琐代码。为什么 Android 富文本 SpannableString 总是难写原生 Android 中想给一句话的某几个字加粗变色你得手动计算每个字符的起始/结束索引再逐个setSpan(...)val ss SpannableString(Android 富文本真简单) ss.setSpan(StyleSpan(Typeface.BOLD), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) ss.setSpan(ForegroundColorSpan(Color.RED), 7, 13, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)文本一长索引算错一个字就翻车代码又长又难读。Android-Extensions 的解法是让样式跟着文字走——直接调用字符串扩展函数框架在内部帮你处理索引。30秒上手添加 Android-Extensions core 模块依赖托管在 Maven Central在build.gradle中添加一行即可当前 core 版本为 1.3.2见 libraryVersion.propertiesrepositories { mavenCentral() } dependencies { implementation com.tunjid.androidx:core:1.3.2 }所有富文本扩展函数都在com.tunjid.androidx.core.text包中一个import com.tunjid.androidx.core.text.*就能全部启用。13 个流畅样式方法速查表以下是 core 模块 CharSequenceExtensions.kt 提供的完整方法清单准确路径core/src/main/java/com/tunjid/androidx/core/text/CharSequenceExtensions.kt方法效果bold()加粗italic()斜体underline()下划线strikeThrough()删除线color(color)文字颜色backgroundColor(color)背景色高亮scale(size)按比例放大/缩小字号scaleX(size)仅水平方向拉伸superScript()/subScript()上标 / 下标shiftBaseline(ratio)基线偏移文字上下浮动click(style, action)可点击文本支持自定义样式applyStyles(vararg)一次性应用多个 Span 标签formatSpanned(vararg)支持%1$s占位符、且保留格式的格式化这些方法可任意链式组合返回CharSequence因此可以无限叠加。✨一行代码多色、多样式富文本来自示例应用 CharacterSequenceExtensionsFragment.kt 的真实写法import com.tunjid.androidx.core.text.* val text SpannableStringBuilder() .append(Spans .bold() in .color(Color.RED) Android .color(Color.GREEN).bold() made easy!.bold().italic().underline().scale(1.2f)) textView.movementMethod LinkMovementMethod.getInstance() textView.text text最后一句easy!一行代码就同时实现了加粗 斜体 下划线 放大 1.2 倍可读性远胜逐段setSpan。富文本拼接与 formatSpanned 格式化两个高频场景API 都有专门优化1. 拼接运算符重载普通拼接Spanned字符串会丢失格式这里重载了plus运算符拼接后每段文字自带的样式完整保留。上面示例就是靠拼出来的。2. 格式化formatSpannedString.format会把参数里的 Span 洗掉formatSpanned是保留格式的替代方案val text 请先阅读并同意 %1$s 与 %2$s.formatSpanned( 用户协议.underline().click { /* 跳转协议页 */ }, 隐私政策.underline().click { /* 跳转政策页 */ } )⚠️ 小提示formatSpanned中同一个参数只能引用一次重复引用会退化为纯文本。一行 click 给文本加可点击链接click方法接收两个参数paint消费函数控制外观和点击动作即可做出类似超链接的效果点击这里了解更多.click( { paint - paint.isUnderlineText true }, // 加下划线外观 { showSnack(已点击) } // 点击回调 )注意要让click生效TextView必须设置movementMethod LinkMovementMethod.getInstance()这是新手最容易漏掉的一步。完整富文本 Demo 在哪里看示例应用的 CharacterSequenceExtensionsFragment.kt 展示了上面全部 13 个方法的实际效果包括下标/上标混排、基线偏移、可点击用户协议等。clone 仓库即可在 App 的 Misc 标签页中体验git clone https://gitcode.com/gh_mirrors/an/Android-Extensions更多模块说明可参考 core/README.md 与项目根目录的 README.md。新手快速避坑清单点击没反应→ 检查是否设置了LinkMovementMethod拼接后样式丢了→ 使用重载的即引入core.text包后再拼接格式化后颜色消失→ 用formatSpanned替换String.format想要多个样式→ 链式调用.bold().italic()或用applyStyles(...)一次传入多个 Span后者创建对象更少、效率更高颜色取值→ 示例 App 通过themeColorAt(R.attr.prominent_text_color)从主题取色自动适配深色模式推荐照抄掌握这套流畅 API 后一句话富文本从十几行setSpan变成一行链式调用这正是 Android-Extensions core 模块想带给你的开发体验。【免费下载链接】Android-ExtensionsAn Android library with modules to quickly bootstrap an Android application.项目地址: https://gitcode.com/gh_mirrors/an/Android-Extensions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表