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

Jetpack Compose:仅为Button添加深色涟漪,避免覆盖内部Text

解决Compose Button涟漪效果遮挡文本变灰的问题

你遇到的问题根源是将RippleAlpha的pressedAlpha设置为1f——完全不透明的涟漪会覆盖在Button内部的Text之上,导致文本被遮挡看起来变灰。以下是两种可行的解决办法:

方案1:降低涟漪的透明度

修改rippleAlpha中的pressedAlpha为小于1的半透明值,比如0.3f,这样涟漪效果可见的同时,不会完全遮挡下方的文本:

object RippleCustomTheme : RippleTheme {

    @Composable
    override fun defaultColor() =
        RippleTheme.defaultRippleColor(
            Color(0xFF1F7EFF),
            lightTheme = true
        )

    @Composable
    override fun rippleAlpha(): RippleAlpha =
        RippleAlpha(
            pressedAlpha = 0.3f, // 调整为半透明值
            focusedAlpha = 0f,
            draggedAlpha = 0f,
            hoveredAlpha = 0f
        )
}

方案2:直接给涟漪颜色添加透明度

也可以在定义涟漪颜色时直接设置透明度,配合当前的pressedAlpha值,同样能避免遮挡文本:

object RippleCustomTheme : RippleTheme {

    @Composable
    override fun defaultColor() =
        Color(0xFF1F7EFF).copy(alpha = 0.3f) // 给颜色添加透明度

    @Composable
    override fun rippleAlpha(): RippleAlpha =
        RippleAlpha(
            pressedAlpha = 1f,
            focusedAlpha = 0f,
            draggedAlpha = 0f,
            hoveredAlpha = 0f
        )
}

原理说明

Compose中Button的涟漪效果是绘制在内容层的上方,完全不透明的涟漪会覆盖所有内部内容,调整透明度后就能让下方的文本正常显示。

内容的提问来源于stack exchange,提问作者Ali Asjad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:23:22