在 ImageButton 中使用 Elevation 和 Ripple

Using Elevation and Ripple in ImageButton

我正在尝试在 ImageButton 上同时设置高度和波纹效果。 我是 运行 棒棒糖。

代码如下:

    <android.support.v7.widget.AppCompatImageButton
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:elevation="5dp"
            android:background="?attr/selectableItemBackgroundBorderless"
            app:srcCompat="@drawable/add" />

我的主题是:Theme.AppCompat.Light.DarkActionBar

有了这段代码,我只得到了涟漪。 如果我删除背景(波纹),我会得到提升。

已编辑:

注意:所有屏幕截图都是在单击(长按)图像时截取的。

我用 android:background="?attr/selectableItemBackground" 测试过,我得到了一个波纹,背景是一个正方形,但没有高程:

使用 android:background="?attr/selectableItemBackgroundBorderless" 我得到了圆形背景的波纹,但没有高程:

没有背景属性我得到了高度,默认的ImageButton背景:

我需要的是同时圆形波纹背景和高程

像阴影一样,无边界波纹会投射到最近的父表面上——这意味着它们无法投射阴影。考虑改用带边框的波纹:

android:background="?attr/selectableItemBackground"

现在已经五年了,但我重新审视了这个,解决方案是使用 foreground 而不是 background:

    <ImageButton
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@null"
        android:elevation="5dp"
        android:foreground="?attr/selectableItemBackgroundBorderless"
        android:src="@mipmap/ic_launcher"/>