Cómo agregar sombra a la FAB proporcionada con la biblioteca de diseño de soporte de Android?
El título es bastante auto explicativo.
El siguiente código no muestra sombra debajo del botón de acción flotante. ¿Qué se puede hacer para hacer sombra? ¿Esta función realmente no es compatible incluso en la API 21+?
- Null Pointer Exception on child en onMeasure (): futuresimple / floating-action-button
- Android CircularFloatingActionMenu SlideDown
- Color FAB para el fondo No cambia en los dispositivos de versión de Gingerbread
- Botón de acción flotante El color del borde no está cambiando
- Traducir el botón de acción flotante en ViewPager
<android.support.design.widget.FloatingActionButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_add" android:clickable="true" />
Nota: La adición de android:elevation
no agrega sombra a la API 21.
Captura de pantalla tomada del ejemplo por dandar3: https://github.com/dandar3/android-support-design
- Cómo alinear el botón de acción flotante al centro
- El margen predeterminado de FloatingActionButton no funciona en lollipop
- Cambiar el color FAB con efecto de ondulación
- Botón de acción flotante de Android con funcionalidad de arrastrar y soltar
- FloatingActionButton con texto en lugar de imagen
- No se pudo encontrar: com.android.support:appcompat-v7:22.2.0
- FloatingActionButton sombra en pre-lollipop
- Cómo reparar sombra en FloatingActionButton escalado mediante la biblioteca de soporte 23
Basta con configurar la app:borderWidth="0dp"
resolver estos problemas para mí.
Nota: no olvides añadir xmlns:app="http://schemas.android.com/apk/res-auto"
a tu diseño raíz.
Este problema debe arreglarse en la siguiente versión de la biblioteca de diseño de Android.
Para API 21+ es necesario configurar app:borderWidth="0dp"
y app:elevation="[number]dp"
. Estableciendo la elevación que está dando el tamaño de la sombra que desea:
A continuación se muestra un ejemplo de código para API 21+:
<android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/locate_user_FAB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/location_off" app:elevation="6dp" app:borderWidth="0dp" android:layout_above="@+id/take_taxi_FAB" app:backgroundTint="@color/colorAccentGrey">
Una cosa importante a recordar para APIs abajo a 21 (androide 4), es para los términos de la compatibilidad FAB pondrá los márgenes alrededor de su botón para dibujar la sombra. Entonces deberías hacer algo así (estoy usando este código y funciona):
<android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/locate_user_FAB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/location_off" app:elevation="6dp" app:borderWidth="0dp" android:layout_above="@+id/take_taxi_FAB" android:layout_alignParentRight="true" android:layout_marginRight="@dimen/map_FAB_marginRight" android:layout_marginBottom="@dimen/locate_user_FAB_marginBottom" app:backgroundTint="@color/colorAccentGrey">
Prefiero poner xmlns:app="http://schemas.android.com/apk/res-auto"
al principio del XML, pero lo puse allí sólo para recordarle;]
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"
Orden parece importar por alguna razón (la primera orden funciona, la segunda no) y esto es de la biblioteca de soporte 23.3.0
Comprobar el manifiesto en el proyecto o las bibliotecas en Etiqueta de aplicación y eliminarlas
android:hardwareAccelerated="false" android:largeHeap="true"
Pero si necesitas estas opciones, entonces las sombras y las animaciones de transformación no funcionarán
Estaba experimentando este mismo problema y lo conseguí para trabajar al eliminar esta etiqueta de mi AndroidManifest.xml.
android:hardwareAccelerated="false"
Lo añadí inicialmente, junto con android:largeHeap="true"
, porque pensé que lo necesitaba para un HeatMap en el que un gran número de puntos donde se muestra, pero luego me di cuenta de que podría funcionar sólo con android:largeHeap="true"
.
- Android Gradle no puede encontrar clase de símbolo Gson
- Alinea el texto dentro de un botón en Android