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

处理重叠FloatingActionButton与ProgressBar的点击事件问题

How to Trigger FloatingActionButton's Ripple Effect When Clicking Through a Covering ProgressBar in ConstraintLayout

我懂你遇到的这个问题了——你的环形ProgressBar视觉上盖在FAB上面,结果点击这个区域时,触摸事件全被ProgressBar截胡了,根本触发不了FAB的涟漪效果。虽然你已经给ProgressBar加了android:clickable="false"和android:focusable="false",但还差几个关键属性才能让触摸事件完全透传到下面的FAB。

直接解决方案:让ProgressBar彻底“无视”触摸

修改你布局里的ProgressBar,补充这两个属性,确保它完全不处理任何触摸交互:

<ProgressBar
    android:id="@+id/playProgress"
    style="?android:progressBarStyleHorizontal"
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:clickable="false"
    android:focusable="false"
    android:focusableInTouchMode="false" <!-- 新增:触摸模式下也不抢焦点 -->
    android:longClickable="false" <!-- 新增:禁止长按响应 -->
    android:progress="70"
    android:progressDrawable="@drawable/progress_circle"
    android:visibility="visible"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

原理说明

这几个属性组合起来,就把ProgressBar变成了一个“纯视觉”元素:

  • android:clickable="false":直接禁用点击响应
  • android:focusable="false":不让它获取焦点,避免抢触摸事件
  • android:focusableInTouchMode="false":确保在触摸操作时,它也不会跳出来抢焦点
  • android:longClickable="false":连长按事件也一并禁用

这样一来,所有触摸这个区域的事件都会直接穿透ProgressBar,传递到下方的FAB上,点击时自然就能触发FAB的涟漪效果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:05:16