You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现带阴影效果的TextView 有什么更简便方法或第三方库?

实现同文本内差异化文字样式的方案

你要的单块文本内不同区域文字大小、样式不同的效果,不需要依赖两个TextView,以下是两种可选实现思路:

方案1:原生SpannableString实现(无额外依赖,优先推荐)

Android原生提供的Spannable系列API可以直接在单个TextView中实现文本局部样式定制,除了大小差异化,还可以同时实现颜色、粗斜体、删除线、点击事件等定制效果,性能优于多TextView拼接方案,示例代码如下:

val showText = "¥129.9 起"
val spannableStr = SpannableString(showText)
// 给价格区域设置26sp字号
spannableStr.setSpan(
    AbsoluteSizeSpan(26, true), // 第二个参数为true表示单位是sp,默认单位为px
    0, 6,
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
// 给后缀"起"设置14sp字号
spannableStr.setSpan(
    AbsoluteSizeSpan(14, true),
    6, showText.length,
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
// 直接赋值给TextView即可
yourTextView.text = spannableStr

Java写法逻辑和API完全一致,仅需调整语法适配即可。

方案2:第三方库封装方案(适合高频使用富文本样式的场景)

如果项目中频繁需要用到各类富文本效果,可以选择成熟的封装库简化代码:

  • Spanny:对原生Spannable API做了轻量封装,支持链式调用设置不同区域样式,无需手动计算文本下标
  • RichText:支持更复杂的富文本效果,包括图文混排、多段落样式、超链接定制等,适合富文本需求多的项目

如果你的需求仅为简单的文字大小差异化,优先选择原生方案即可,不需要额外引入库增加包体积。

内容的提问来源于stack exchange,提问作者Taha Sami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:45:02