?selectableItemBackground 水波纹效果

本文介绍如何仅用一行代码在Android应用中实现水波纹效果,详细解析了使用android:foreground属性的方法,并分享了确保该效果生效的必要条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近段时间在学习知乎开源项目Matisse,无意之中发现他们仅仅使用一行代码就实现了水波纹效果,这着实令我大吃一惊!

为了get这个技能,我也是走了很多冤枉路,所以记录一下,也许可能帮助其他童鞋。

先看看他们是如何实现的

android:foreground="?selectableItemBackground"

恩,前面也说,只用这一句就够了。其中 android:foreground 是前景色,我第一次看见这个货的时候是一脸懵逼,我相信不知我一个童鞋对他感觉到陌生。他与android:background是相对的,相比背景色他的使用就太少了。

android:foreground

为了照顾一下不了解这个函数的童鞋,我简单解释一下

我们写个Demo,父布局文件中只有一个TextView
然后我们再TextView 中写点什么,
最后通过设置 android:backgroundandroid:foreground 观察结果

这里使用的颜色值为 #CF009688 ,添加了透明度。

android:background="#CF009688" 的效果
back ground

然后在来观察 android:foreground="#CF009688" 的效果

foreground

如果不添加透明度,foreground 会完全覆盖文字,我相信你们看完这个Demo就能够明白这个函数的意义了,这里我就不啰嗦了。

?selectableItemBackground 无效

接着上面的demo ,如果我为 TextView 设置 ?selectableItemBackground ,然后运行,会发现一点卵用都没有。

what?没用?那为什么知乎会有效果!是不是还需要设置什么主题 配置之类的!?

这是我第一次运行的心里写照,然后顺着这个坑我摸索了很久…

最后无意中发现是因为TextView 是不可点击的缘故。

所以只需要为View 设置
android:clickable="true"
或者
.setOnClickListener(null);

即可。

但愿不要在有童鞋重蹈我之前的覆辙。

水波纹改色

这个需要在主题中进行配置 ,配置代码如下
<item name="colorControlHighlight">@color/accent_material_light</item>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值