Apply Material Design Touch Ripple to ImageButton?
You can just add a background to your ImageButton like this :
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_dialog"
android:background="?android:attr/selectableItemBackground" />
I got good answers from i.shadrin (here) and Nicolars (here).
The difference between their answers is that ?attr/selectableItemBackgroundBorderless
can give you an android.view.InflateException
, so the ?android:attr/selectableItemBackground
is the solution.
FWIW, I do not know why the exception happens, because the first answer worked fine in all my old projects, but in my recent project not (maybe because the app theme = android:Theme.Material
?).
The strange thing that was happening is that though the ripple effect was shown it was out-bounding the ImageButton, so the solution is:
- To use the
android:foreground="?android:attr/selectableItemBackgroundBorderless"
instead ofandroid:background="?android:attr/selectableItemBackgroundBorderless"
Hope it help you if you are facing the same.
For even better result:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_button"
android:background="?attr/selectableItemBackgroundBorderless"
/>