Programmatically set '?selectableItemBackground' on Android view Programmatically set '?selectableItemBackground' on Android view android android

Programmatically set '?selectableItemBackground' on Android view


For appcompat you can use,

TypedValue outValue = new TypedValue();getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true);cardView.setBackgroundResource(outValue.resourceId);


For those who work with Kotlin, here are some extensions functions to add Ripple on Android View type :

private fun View.addRipple() = with(TypedValue()) {    context.theme.resolveAttribute(android.R.attr.selectableItemBackground, this, true)    setBackgroundResource(resourceId)}private fun View.addCircleRipple() = with(TypedValue()) {    context.theme.resolveAttribute(android.R.attr.selectableItemBackgroundBorderless, this, true)    setBackgroundResource(resourceId)}


I was looking for the same solution. I slightly changed this answer to make it more suitable for the asked question. Call the following code from your constructor.

private void setClickableAnimation(Context context){    TypedValue outValue = new TypedValue();    context.getTheme().resolveAttribute(         android.R.attr.selectableItemBackground, outValue, true);            setForeground(getDrawable(context, outValue.resourceId));}