¿Cómo agregar sombra al FAB proporcionado con la biblioteca de diseño de soporte de Android?

El título es bastante auto explicativo.

El siguiente código no representa la sombra debajo del botón de acción flotante. ¿Qué se puede hacer para hacer sombra? ¿Esta característica realmente no es compatible incluso con API 21+?

 

Nota: Agregar android:elevation no agrega sombra en API 21.

Captura de pantalla de ejemplo

Captura de pantalla tomada del ejemplo por dandar3: https://github.com/dandar3/android-support-design

Simplemente configurando la app:borderWidth="0dp" resuelve estos problemas para mí.

Nota: no olvide agregar xmlns:app="http://schemas.android.com/apk/res-auto" a su diseño raíz.

Este problema debería solucionarse en el próximo lanzamiento de la biblioteca de diseño de Android.

Para la API 21+, debe configurar la app:borderWidth="0dp" y la app:elevation="[number]dp" . Al configurar la elevación, está dando el tamaño de sombra que desea:

Ejemplo de valores para el parámetro

Aquí hay un ejemplo de código para API 21+:

  

Una cosa importante para recordar para las API inferiores a 21 (Android 4), es para términos de compatibilidad. FAB colocará márgenes alrededor de su botón para dibujar la sombra. Entonces deberías hacer algo como eso (actualmente estoy usando este código y funciona):

  

Prefiero poner xmlns:app="http://schemas.android.com/apk/res-auto" al comienzo del XML, pero lo puse allí solo para recordarte;]

Si esto todavía no funciona para algunos, hay una diferencia significativa entre:

 app:elevation="6dp" app:borderWidth="0dp" 

y

 app:borderWidth="0dp" app:elevation="6dp" 

El orden parece importar por alguna razón (el primer orden funciona, el segundo no) y esto es de la biblioteca de soporte 23.3.0

Compruebe el manifiesto en el proyecto o las bibliotecas en la etiqueta de la aplicación y elimínelos

 android:hardwareAccelerated="false" android:largeHeap="true" 

Pero si necesita estas opciones, las sombras y las animaciones de transformación no funcionarán

Estaba experimentando el mismo problema y lo tengo que trabajar eliminando esta etiqueta de mi AndroidManifest.xml.

 android:hardwareAccelerated="false" 

Inicialmente lo agregué, junto con android:largeHeap="true" , porque pensé que lo necesitaba para un HeatMap en el que se mostraban una gran cantidad de puntos, pero luego me di cuenta de que solo podía funcionar con android:largeHeap="true" .

    Intereting Posts