应用材质devise触摸纹波到ImageButton?
我有一个图像button,它不响应点击时的触摸animation,因为它是一个静态图像,不像棒棒糖上的内置涟漪效应。 我想添加材料devise涟漪触摸效果的形象,但似乎无法find一个方法来实现它。 我可以在图像上设置一个颜色filter,但这不是涟漪效应。 我试图做的一个例子是,当您在Google Play音乐中放置相册封面图片时,图片上会出现阴影涟漪。
为了更好的结果:
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_button" android:background="?attr/selectableItemBackgroundBorderless" />
你可以像这样为你的ImageButton添加一个背景:
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/btn_dialog" android:background="?android:attr/selectableItemBackground" />
或者,如果您的目标是API 21+,请使用backgroundTint
:
<ImageButton android:backgroundTint="@color/white" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_button" style="@style/Widget.AppCompat.ImageButton"/>
我从i.shadrin( 这里 )和Nicolars( 这里 )得到了很好的答案。
他们的答案之间的区别是?attr/selectableItemBackgroundBorderless
可以给你一个android.view.InflateException
,所以?android:attr/selectableItemBackground
是解决scheme。
FWIW,我不知道为什么发生exception,因为第一个答案在我所有的旧项目中工作正常,但是在我最近的项目中(可能是因为应用程序主题= android:Theme.Material
?)。
奇怪的是,虽然涟漪效应已经显示出来了,但ImageButton却是这样的,所以解决办法是:
- 要使用
android:foreground="?android:attr/selectableItemBackgroundBorderless"
而不是android:background="?android:attr/selectableItemBackgroundBorderless"
希望它能帮助你,如果你面对相同的。