Recientemente, leí estas publicaciones:
Biblioteca de soporte de diseño de Android
Biblioteca de soporte de Android, revisión 22.2.0
Pero ninguno de ellos me da un ejemplo detallado sobre cómo crear uno nuevo FloatingActionButton
. Tan difícil de entender, hago esta pregunta.
¿Alguien puede darme un ejemplo al respecto?
Cualquier ayuda será muy apreciada. Gracias por adelantado.
EDITAR
Acabo de encontrar algunos problemas en FloatingActionButton
(FAB), y quiero mejorar otra respuesta. Vea mi respuesta a continuación.
Respuestas:
Entonces, en su
build.gradle
archivo, agregue esto:Nota de AndroidX: Google está introduciendo nuevas bibliotecas de extensiones de AndroidX para reemplazar las bibliotecas de soporte más antiguas. Para utilizar AndroidX, primero asegúrese de que ha actualizado su
gradle.properties
archivo , editadobuild.gradle
al conjuntocompileSdkVersion
de28
(o superior), y utilice la siguiente línea en lugar del anteriorcompile
uno.A continuación, en su
themes.xml
ostyles.xml
lo que sea, asegúrese de configurar esto, es el color de acento de su aplicación, y el color de su FAB a menos que lo anule (ver a continuación):En el XML del diseño:
O si está utilizando la biblioteca de materiales de AndroidX anterior, en su lugar usaría esto:
Puede ver más opciones en los documentos ( documentos de material aquí) (
setRippleColor
, etc.), pero uno de nota es:Otro interesante: para cambiar el color de fondo de un solo FAB, agregue:
(por ejemplo, para cambiarlo a rojo) al XML anterior.
De todos modos, en código, después de que la vista de Actividad / Fragmento se infla ...
Observaciones:
Aquí hay una manera de eliminar o cambiar el relleno si hay demasiado:
Además, iba a colocar programáticamente la FAB en la "costura" entre dos áreas en un diseño relativo tomando la altura de la FAB, dividiéndola entre dos y utilizándola como compensación de margen. Pero myFab.getHeight () devolvió cero, incluso después de que la vista se infló, al parecer. En su lugar, utilicé un ViewTreeObserver para obtener la altura solo después de que se presentó y luego establecer la posición. Vea este consejo aquí . Se veía así:
No estoy seguro si esta es la forma correcta de hacerlo, pero parece funcionar.
Si desea el FAB en una "costura" puede usar
layout_anchor
ylayout_anchorGravity
aquí hay un ejemplo:Recuerde que puede hacer que el botón salte del camino automáticamente cuando aparezca un Snackbar envolviéndolo en un CoordinatorLayout .
Más:
fuente
android:backgroundTint="#FF0000"
por ejemplo, a FloatingActionBar en el XML. (agregando a la respuesta)sp
en la propiedad evelation. Debería serapp:elevation="4dp"
FloatingActionButton
a aCoordinatorLayout
, puede usarapp:layout_anchor="element_with_seam"
yapp:layout_anchorGravity="bottom|right|end"
colocar el FAB correctamente sobre una costura - vea el diseño de activity_detail de cheesesquareAcabo de encontrar algunos problemas en FAB y quiero mejorar otra respuesta.
problema setRippleColor
Entonces, el problema vendrá una vez que establezca el color ondulado (color FAB al presionar) mediante programación
setRippleColor
. Pero, todavía tenemos una forma alternativa de configurarlo, es decir, llamando:Su proyecto debe tener esta estructura:
Y el código de
fab_ripple_color.xml
es:Finalmente, modifique su FAB ligeramente:
Para API nivel 21 y superior, establezca el margen derecho e inferior en 24dp:
Guías de diseño de FloatingActionButton
Como puede ver en mi código xml FAB anterior, configuré:
Al establecer estos atributos, no es necesario establecerlos
layout_marginTop
ylayout_marginRight
nuevamente (solo en pre-Lollipop). Android lo colocará automáticamente en el lado derecho de la pantalla, lo mismo que FAB normal en Android Lollipop.O puede usar esto en
CoordinatorLayout
:elevation
y 12dppressedTranslationZ
, de acuerdo con esta guía de Google.fuente
pressedTranslationZ
. No lo sabia.app:elevation
yapp:pressedTranslationZ
. Su valor predeterminado es el definido en las pautas de diseño de materiales. De todos modos, e.shishkin tiene razón, los valores sonapp:elevation:6dp
ypressedTranslationZ:6dp
. Puede consultarlo en el código fuenteFloatingActionButton
se extiendeImageView
. Entonces, es simple como introducir unImageView
en su diseño. Aquí hay una muestra XML.app:borderWidth="0dp"
se agrega como una solución para problemas de elevación.fuente
para AndroidX use como
fuente
Si ya agregó todas las bibliotecas y todavía no funciona, use:
en vez de:
Y todo funcionará bien :)
fuente