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:
- No se pudo encontrar la clase 'android.graphics.drawable.RippleDrawable' Unicode issue?
- Cómo utilizar RippleDrawable programaticamente en código (no xml) con Android 5.0 Lollipop?
- Crear una ondulación dibujable sin transparencia
- Implementar efecto de ondulación fuera de ImageButton
- Android Button Ripple en Lollipop y resaltar en pre lollipop
<?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?
- No hay efecto de ondulación en el tacto en la vista de reciclaje
- Mantenga la ondulación dentro del trazo
- Android L's Ripple Effect - Touch Feedback para los botones - Uso de XML
- AppCompatButton backgroundTint API <21
- ¿Es esta la forma correcta de obtener el efecto de rizo en los dispositivos pre-piruletas?
- Efecto de ondulación de material oculto por otra vista en el diseño
- RippleDrawable creada programaticamente se ve diferente de su contraparte xml
- Android: <include> con RippleEffect & StateListAnimator
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"/>
- Cómo crear un elemento de nuevo en ActionBar?
- Múltiples líneas de texto en un botón. Cada línea tiene diferentes estilos de texto