Android imagebutton涟漪效应

时间:2016-12-15 13:55:25

标签: android android-5.0-lollipop rippledrawable

好的,所以我理解涟漪效应只有LOLLIPOP才能使用。但是,在设置我的ImageButton时,我仍然无法获得一个很好的涟漪效果,就像#"常规"按钮,只显示图像(和透明的bg)......

我添加了AppCompat v7并将第二个布局放在我的drawable / layout-v21文件夹中,其中包含以下按钮:

<ImageButton
    android:id="@+id/forward"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:width="15dp"
    android:scaleType="fitCenter"
    android:height="15dp"
    android:padding="25dp"
    style="@style/Widget.AppCompat.ImageButton"
    android:src="@drawable/forwardplay" />

但是背景是灰色的,并且无法定制波纹(灰色)。

所以,如果我只有一个漂亮的波纹可绘制放入我的drawable-v21那将是伟大的,我可以从ImageButton的background属性引用它。事情是我找不到原来的Android Ripple效果(我有三星S6手机,是三星的主题吗?)

如果有人能分享他们的工作可吸引人,那会很高兴。

谢谢!

6 个答案:

答案 0 :(得分:5)

试试这个,绝对应该有效:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@android:drawable/YOUR_BUTTON_SOURCE"
    android:background="?attr/selectableItemBackgroundBorderless"
/>

答案 1 :(得分:1)

  

......这是三星的主题吗?

很可能,但无论如何我使用以下方法来达到这种效果。

这取决于你要去的样子。如果您使用的图标类似于您在操作栏中看到的内容,则可能需要使用actionButtonStyle

style="?attr/actionButtonStyle"

还有一些其他可以选择的按钮样式属性,可能包含也可能不包含涟漪效应。

否则,如果您使用实际图片作为按钮,则可以使用selectableItemBackgroundselectableItemBackgroundBorderless属性作为前景:

android:foreground="?attr/selectableItemBackground"

答案 2 :(得分:0)

尝试使用

android:background="?selectableItemBackground"

答案 3 :(得分:0)

您可以为您的按钮设置可绘制和设置背景。

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/grey_15">
    <item android:id="@android:id/mask">
        <shape android:shape="oval">
            <solid android:color="?android:colorPrimary"/>
        </shape>
        <color android:color="@color/white"/>
    </item>
</ripple>

更改规格的颜色。

答案 4 :(得分:0)

尝试以下answer后:

<?xml version="1.0" encoding="utf-8"?>
<ripple android:color="#ffffff"
        xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/mask"
          android:drawable="@android:color/white" />
</ripple>

我找到了一个心灵:)像魅力一样工作!

总结:

  1. 将您的布局放在layout-v21中以支持更新的设备(并在常规的drawable / layout文件夹中保留旧设备的副本。
  2. 创建一个drawable-v21文件夹,并将上面的文本放在名为ripple.xml
  3. 的文件中
  4. 将其设置为背景,如下所示:

    <ImageButton
        android:id="@+id/forward"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:width="15dp"
        android:scaleType="fitCenter"
        android:height="15dp"
        android:padding="25dp"
        android:background="@drawable/ripple_bg"
        android:src="@drawable/forwardplay" />
    

答案 5 :(得分:0)

尝试使用

android:background="?android:attr/actionBarItemBackground"