Search code examples
androidandroid-5.0-lollipopmaterial-design

?android:attr/selectableItemBackground not visible enough on a dark background


On Android Lollipop, I'm using:

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

to have the material animated feedback when I click on a button.

It works well when I have a button contained in a white/light layout, like a CardView for example.

But when I want to use the same thing on a dark background, we barely see the effect, it is not visible enough.

Does someone have an idea?

Thank you


Solution

  • On API 21+ you can set android:theme="@android:style/ThemeOverlay.Material.Dark" on a View or ViewGroup to change all of the theme attributes (text color, ripple color, button color, etc.) to the "dark" versions. If you set it on a ViewGroup, the theme is also applied to all of the child elements during inflation. It's an easy way to have regions of "dark" in an otherwise "light" interface (or vice versa).

    <LinearLayout
        android:id="@id/my_dark_layout"
        ...
        android:theme="@android:style/ThemeOverlay.Material.Dark">
    
        <TextView
            android:id="@id/my_dark_bounded_ripple"
            ...
            android:background="?android:attr/selectableItemBackground"
            android:text="Bounded ripple" />
    
        <ImageButton
            android:id="@id/my_dark_unbounded_ripple"
            ...
            android:background="?android:attr/selectableItemBackgroundBorderless"
            android:src="@drawable/my_icon" />
    
    </LinearLayout>