触摸布局时,如何在简单的线性/相对布局中产生涟漪效应?
我已经尝试将布局的背景设置为:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight" >
<item android:drawable="@android:color/white"/>
</ripple>
然而,我只看到纯白色背景,并且在触摸布局时没有涟漪效应 . 我究竟做错了什么?
编辑:
作为参考,这是我的布局xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="250dp"
android:layout_height="250dp"
android:background="@drawable/test"
android:clickable="true">
</RelativeLayout>
9 回答
把它放到你的布局中:
注意:API文档中存在错误 . 它只适用于 API >= 23
对于 all API levels 使用此Solution
除了_551994的答案之外,我还要添加这个,以防有人想要一个不同颜色的布局并且还有涟漪效果 . 你只需在drawable中创建一个涟漪效果,如下所示:
然后将其作为布局的背景或任何按钮,如答案中提到的Igor Ganapolsky .
使用此 ripple.xml in Drawable folder ,然后将其指定为View
android:background="@drawable/ripple"
android:clickable="true"
事实证明这是按预期工作的 . 标准材质主题colorControlHighlight值为
#40ffffff
. 所以在白色背景上,这不会出现 . 将高亮颜色更改为其他内容可以起作用,和/或更改对象的背景颜色 .谢谢大家(特别是Alanv指出我正确的方向) .
只需添加
android:background="?selectableItemBackground"
的默认涟漪效果Like:
我尝试了所有这些答案,没有什么对我有用,所以,我解决了创建以下样式:
然后,我应用于我的线性布局:
您必须在任何窗口小部件(
TextView
/Button
)中更改以下代码段,并且可以实现 Ripple Effect :你很高兴 .
在布局上设置
android:clickable="true"
.在布局上设置这些属性(如果布局具有默认的白色/浅色背景):
在这种情况下,您不需要自定义drawable .
但是,如果你的布局有黑色/深色背景,你必须像这样创建自己的波纹可绘制:
然后将此波纹绘制为 android:background 属性 .
您可以在AOSP中看到许多这类涟漪的例子:http://androidxref.com/8.0.0_r4/search?q=ripple&defs=&refs=&path=&hist=&project=art&project=bionic&project=bootable&project=build&project=cts&project=dalvik&project=developers&project=development&project=device&project=docs&project=external&project=frameworks&project=hardware&project=kernel&project=libcore&project=libnativehelper&project=packages&project=pdk&project=platform_testing&project=prebuilts&project=sdk&project=system&project=test&project=toolchain&project=tools