处理重叠FloatingActionButton与ProgressBar的点击事件问题
我懂你遇到的这个问题了——你的环形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
相关产品推荐
相关产品推荐

