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>
- ¿Cómo puedo colocar un ProgressBar a la derecha de la barra de herramientas?
- Cómo diseñar el DrawerArrowToggle de Android appcompat v7 21 library
- Cambiar el color de la barra de estado en el cambio de fragmentos
- Detectando Android L Battery Saver
- Activación del modo de ubicación Alta exactitud o ahorro de la batería, programáticamente, sin necesidad de que el usuario visite Configuración
- Android Lollipop: Dónde encontrar el código de "API Demos" aplicación preinstalada en el Android Lollipop Nexus 5 emulador
- Android: windowNoTitle no ocultará la barra de acción con appcompat-v7 21.0.0
- Error al intentar crear revelación circular: IllegalStateException: no se puede iniciar esta animación en una vista separada
- Android L | Libusb_init devuelve LIBUSB_ERROR_OTHER (-99)
- Android Lollipop - comportamiento cambiado de SQLite
- La barra de acciones se muestra incorrectamente al volver del modo inmersivo
- No puedo obtener la ruta real de la tarjeta SD extraíble. ¿Hay alguna manera de conseguir?
- GLES10.glGetIntegerv devuelve 0 sólo en Lollipop
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.
- Anular el método OnResume () de todas las actividades de Android
- Estilo de detalle de detalle dividido en android