问题
I have been developing an app for Lollipop (API 21).
When I change the Button color to something, the ripple effect doesn't works.
I found some third party libraries for the ripple effect, but I want to do this with standard API.
This answer didn't help either.
XML:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_below="@+id/textView"
android:background="@android:color/holo_blue_bright"
android:layout_alignParentStart="true"
android:layout_marginTop="76dp"
/>
回答1:
You have to set your button's background to a RippleDrawable which you can define in XML. (I'll name it holo_blue_ripple.xml)
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@android:color/white"> <!-- ripple color -->
<item android:drawable="@android:color/holo_blue_bright"/> <!-- normal color -->
</ripple>
Then reference it with android:background="@drawable/holo_blue_ripple".
回答2:
Try this:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
...
/>
Based on this tutorial and the official docs
回答3:
Also ?attr/selectableItemBackgroundBorderless canbe used for circular ripple effect.
回答4:
Try this attribute
android:background="?attr/selectableItemBackground"
This is the simplest way to show ripple effect in your view/layout.
来源:https://stackoverflow.com/questions/27070269/ripple-effect-for-lollipop-views