I have a layout, that includes another layout:
Based on the thread Does Android XML Layout's 'include' Tag Really Work? and LayoutInflater.java it seems
tag only supports android:id
, layout_*
and android:visibility
attributes. So your code to set background
and stateListAnimator
have no effect.
To fix the below issue with @Stepane's code :
your method enables the ripple effect properly, however the SLA isn't fired. I cannot see any elevation taking place
If the inflated view is transparent, then the elevation is not visible, you have to set viewOutline
or use some non-transparent color for the view to see the shadow.
An extract from ViewOutlineProvider documentation:
Interface by which a View builds its Outline, used for shadow casting and clipping.
To set the outlineProvider
you can make use of View#setOutlineProvider (ViewOutlineProvider provider) method or you can set via android:outlineProvider
xml tag.
Updated Code:
LinearLayout root =(LinearLayout) findViewById(R.id.container);
StateListAnimator sla = AnimatorInflater.loadStateListAnimator(this, R.animator.lift_up);
root.setStateListAnimator(sla);
root.setClickable(true);
root.setOutlineProvider(ViewOutlineProvider.PADDED_BOUNDS);
root.setBackground(ContextCompat.getDrawable(this, R.drawable.ripple_effect));
ripple_effect.xml
-
res/animator/lift_up.xml
-
-