La elevación no funciona en un LinearLayout

Después de buscar una solución, no encontré ninguna para resolver mi problema.

Tengo una cierta elevación que produce una sombra en una gran parte de mi aplicación.
Pero en un lugar particular, no soy capaz de hacer que funcione.
(Es donde pongo una flecha en la imagen de abajo)

Introduzca aquí la descripción de la imagen

El área blanca debajo de la barra de herramientas es un Fragment que muestra un LinearLayout

diseño:

 <LinearLayout android:id="@+id/panelAddress" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_flat_white" android:elevation="10dp" android:orientation="vertical" android:padding="20dp" > //some content </LinearLayout> 

El padre del Fragmento:

 <android.support.v4.widget.DrawerLayout android:id="@+id/drawerLayout" 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" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include android:id="@+id/custom_toolbar" layout="@layout/toolbar"/> <RelativeLayout android:id="@+id/mapLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/map" class="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent"/> <FrameLayout android:id="@+id/fragment_container_top" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" /> <FrameLayout android:id="@+id/fragment_container_bottom" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"/> </RelativeLayout> </LinearLayout> </android.support.v4.widget.DrawerLayout> 

¿Tienes una idea de por qué no obtengo mi elevación?

Como se describe aquí https://stackoverflow.com/a/27518160/2481494 hay varios requisitos para que la sombra se dibuja:

  • Espacio para la sombra en la vista de los padres Grupo. Como se mencionó con el sangrado182, el relleno puede provocar que la sombra se recorte:

    (NO use un relleno.Un relleno en el framelayout también cortará la sombra)

    Sin embargo, esto puede arreglarse con android:clipToPadding="false" en el padre.

  • La vista elevada necesita tener un fondo para echar una sombra. Sin información sobre tu @drawable/button_flat_white No puedo decir si esto es un problema en tu caso.

Para solucionar su problema debe modificar su FrameLayout de la siguiente manera:

 <FrameLayout android:id="@+id/fragment_container_top" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:clipToPadding="false" android:paddingBottom="10dp"/> 

Para comprobar si su @drawable/button_flat_white causa algún problema intente cambiar el fondo de su LinearLayout a un color simple temporalmente:

 <LinearLayout android:id="@+id/panelAddress" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:elevation="10dp" android:orientation="vertical" android:padding="20dp" android:background="#fff"> //some content </LinearLayout> 

Basta con hacer CardView como padre de su LinearLayout y se puede lograr la elevación.

 <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" card_view:cardUseCompatPadding="true" card_view:cardElevation="4dp" card_view:cardCornerRadius="3dp"> <LinearLayout android:id="@+id/panelAddress" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_flat_white" android:orientation="vertical" android:padding="20dp"> //some content </LinearLayout> </android.support.v7.widget.CardView> 

Esta es una cuestión de dibujo.

La sombra del molde se dibuja fuera de los límites de las vistas reales, por lo que si el diseño principal no "da" a la vista espacio suficiente, se recortará.

Dado que el padre del fragmento (disposición lineal) tiene el mismo tamaño, la sombra se recorta. Agregue un margen en la parte inferior al LinearLayout.
Si esto no ayuda a intentar envolver el diseño con un FrameLayout con un pequeño margen en la parte inferior (NO use un relleno. Un relleno en el framelayout también cortará la sombra)

1-2dp debe hacer.

Espero que te ayude, Sólo tienes que añadir "marginTop" en el segundo diseño.

 <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="90dp" android:orientation="vertical" android:elevation="5dp" /> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="match_parent" android:layout_height="90dp" android:orientation="vertical" android:padding="5dp" android:layout_marginTop="3dp" /> 

Tengo uso de relleno Derecho y fondo de relleno (para la sombra en la parte inferior y en el derecho de diseño) el que funcionará para mí su muestra una sombra de lo contrario la sombra no funciona problema de dibujo Hacer tal cosa si enfrentan el mismo problema.

Por favor active la opción hardwardAccelerated en el archivo de manifiesto,

 <application ... android:hardwareAccelerated="true"> 
  • Android L Vista previa barra de acción color
  • Cómo animar barras de herramientas superior e inferior (o cualquier otra vista) entrar / salir de la pantalla en desplazamiento en CoordinatorLayout?
  • Creación de un botón de acción flotante con menús de subacción animados
  • Lollipop: botón desactivado -> ¿qué estilo?
  • Inbox de Google como elemento de RecyclerView abrir animación
  • ¿Cuándo se encuentra la barra de progreso indeterminada en Android Support Library
  • Android Toggle Button - Diseño de materiales
  • Diseño de material control paso a paso
  • ¿Es válida la guía de diseño de iconografía Android para Android 5 / Diseño de material
  • Cómo personalizar el color de AppCompatButton
  • Obtener AppCompat no admite la excepción de características del tema actual después de actualizar a la versión AppCompat v22.1.0 issue
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.