Cómo traer ImageView delante de Button en android 5?

En las versiones android anteriores a lolipop, el siguiente código funciona y una imagen está delante del botón. Pero en android 5 la vista de la imagen se coloca detrás del botón.

<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" android:orientation="vertical" > <Button android:id="@+id/button" android:layout_width="210sp" android:layout_height="210sp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/round_button" android:drawablePadding="10dip" android:gravity="center_vertical|center_horizontal" /> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:contentDescription="@string/torch" android:src="?attr/imageview" /> </RelativeLayout> 

El problema aparece propiedad de elevation Android 5.0. Aparentemente, el ordenamiento RelativeLayout del eje Z de RelativeLayout está atado en elevation . Si ambos widgets tienen la misma elevation , el RelativeLayout determinará el orden del eje Z – puede ver que, si cambiaba su diseño para que fuera ambos widgets Button , por ejemplo. Sin embargo, si un widget ( Button ) tiene una elevation y otro widget ( ImageView ) no, la elevation tendrá prioridad.

Puede eliminar la elevation del Button través de android:stateListAnimator="@null" o definiendo su propio animador personalizado . O bien, puede añadir algo de elevation a su ImageView para que sea mayor en el eje Z que el Button .

Los valores de elevación y traducción de los botones se definen en el marco siguiente:

 <!-- Elevation when button is pressed --> <dimen name="button_elevation_material">1dp</dimen> <!-- Z translation to apply when button is pressed --> <dimen name="button_pressed_z_material">2dp</dimen> 

Fuente

Al igual que CommonsWare explicado, establecer la traducciónZ de ImageView mayor que Button valor dará el resultado como se esperaba.

  • CalendarViewShown no está siendo reconocido en Android 5.0 Lollipop
  • ViewHolder en RecyclerView.Adapter no es específico para la posición
  • ¿Cómo usar las vistas de instantáneas de elemento compartido durante una transición de actividad?
  • Actualizar SlidingTabLayout
  • Map-Fragment (v2) Nullpointer (tema bajo Lollipop?)
  • Java.lang.UnsatisfiedLinkError cuando se utiliza con android 5.0
  • Los márgenes del tema del diálogo de AppCompat y el fondo con circular revelan
  • ¿Qué se debe utilizar en lugar de "setListNavigationCallbacks"?
  • La aplicación no se puede ejecutar en Android L con el mensaje de error LogCat
  • Problemas con los botones de diálogo de alerta en Android L
  • Android lollipop elementos compartidos parpadeo / flash
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.