Cómo traer imageView delante de cardview? Cuando ambos son de Disposición Relativa childs

Tengo una disposición XML:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/containor" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#fff6da" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.vats.vatishs.cardviewprogrammatically.MainActivity"> <FrameLayout android:id="@+id/card" android:layout_width="220dp" android:layout_marginTop="10dp" android:layout_height="wrap_content"> <TextView android:background="@color/white" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:text="Hello I am a text View." /> </FrameLayout> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="210dp" android:background="@drawable/select_delete_chim" /> </RelativeLayout> 

Que funciona bien. El resultado será una vista de la imagen encima de la disposición del marco pero cuando utilizo el xml siguiente en cuál he cambian la disposición del marco con CardView:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/containor" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#fff6da" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.vats.vatishs.cardviewprogrammatically.MainActivity"> <android.support.v7.widget.CardView android:id="@+id/card" android:layout_width="220dp" android:layout_marginTop="10dp" android:layout_height="wrap_content"> <TextView android:background="@color/white" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:text="Hello I am a text View." /> </android.support.v7.widget.CardView> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="210dp" android:background="@drawable/select_delete_chim" /> </RelativeLayout> 

Entonces el resultado será: ImageView en la parte posterior de CardView.

¿Alguna solución para esto?

Una cosa más, funcionará bien en los dispositivos pre-lollipop pero en lollipop no funciona.

Salida con CardView en dispositivos pre-lollipop (salida requerida)

Salida con CardView en dispositivos lollipop

CardView tiene una elevación por defecto que es mayor que ImageView, por lo que tenemos que añadir una mayor elevación en ImageView que la elevación de CardView.

Por ejemplo imageView.setElevation(10); Y cardView.setElevation(5);

Ahora, su funcionamiento muy bien en todos los dispositivos.

Escribe esta línea en tu código java después de inicializar ImageView .

imageView.bringToFront();

Escriba la vista de la imagen Sobre cardview, esperanzadamente resuelve el problema

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/containor" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#fff6da" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.vats.vatishs.cardviewprogrammatically.MainActivity"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="210dp" android:src="@drawable/select_delete_chim" /> <android.support.v7.widget.CardView android:id="@+id/card" android:layout_width="220dp" android:layout_marginTop="10dp" android:layout_height="wrap_content"> <TextView android:background="@color/white" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:text="Hello I am a text View." /> </android.support.v7.widget.CardView> </RelativeLayout> 

Hazlo asi,

 <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myCardView" android:layout_width="match_parent" android:layout_height="match_parent" card_view:cardBackgroundColor="@android:color/transparent" card_view:cardElevation="0dp"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_edit" android:background="@android:color/transparent"/> </android.support.v7.widget.CardView> 

Traerá el ImageView al frente.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.