El efecto Ripple no funciona en RelativeLayout

Estoy tratando de implementar el efecto ripple en un RelativeLayout en API 22 pero no aparece. Sin embargo, la misma ondulación funciona en un Button .

El código para mi ripple drawable es como sigue:

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#d1c4e9"> <item android:id="@android:id/mask" android:drawable="@android:color/white" /> <item android:drawable="@drawable/rect"/> </ripple> 

El código para el diseño relativo es el siguiente:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:background="@drawable/ripple"> </RelativeLayout> 

Después de esto, la ondulación se establece como fondo en Button y RelativeLayout . La ondulación en el botón funciona muy bien, pero no se muestra en el RelativeLayout en absoluto.

¿Puede alguien decirme qué estoy haciendo mal?

Añadir este atributo android:clickable="true" funciona. Probado en Nexus 5

Además de lo que dijo Rahunandan, si está usando la biblioteca de soporte appcompat-v7 también necesita agregar android:background="?attr/selectableItemBackground" .

En mi caso, el efecto ripple está funcionando después del primer clic, pero para el primer clic no funcionó para mí. Han cambiado el archivo selector de fondo con android: state_activated = "true" y en main.xml android: clickable = "true" entonces funciona bien para todos los tiempos.

Selector.xml (bajo res \ drawable \ selector.xml)

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_activated="true" android:drawable="@drawable/card_bg_pressed" android:state_enabled="true" android:state_pressed="true"/> <item android:state_activated="true" android:drawable="@drawable/card_bg_focused" android:state_enabled="true" android:state_focused="true"/> <item android:state_activated="true" android:drawable="@drawable/card_bg_selected" android:state_enabled="false" android:state_selected="true"/> </selector> 

En activity_main.xml

  <com.mysample.RecyclingImageView android:id="@+id/imageview_overlay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:background="@drawable/selector" android:clickable="true"/> 
  • Ondulación y fondo sin límites de Android
  • El efecto Ripple no aparece a veces
  • ¿Cómo activar el efecto de rizo en Android Lollipop, en una ubicación específica dentro de la vista, sin desencadenar eventos de touch?
  • Desactivar Ripple en ListView
  • ¿Cómo implementar el efecto ripple en Android KeyboardView?
  • El efecto Ripple no va por encima de ImageView
  • RippleDrawable - Mostrar efecto de rizado por programación
  • ¿Cómo hacer un efecto de rizo sobre un diseño lineal, sin sobrepasar el color de fondo de sus hijos?
  • Botón de ondulación de androide con fondo
  • ¿Cómo hacer una ondulación circular en un botón cuando se está haciendo clic?
  • Android cómo hacer referencia a una nueva clase de la Ripple RippleDrawable
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.