# [CSA04] No nos olvidamos de los botones flotantes `FAB` ###### tags: `blog`, `compose`, `csa` ## La función `FloatingActionButton` Un `FAB` es un componente importante desde hace unos años en las aplicaciones, debido a que es usado habitualmente para mostrar acciones principales que pueden ser llevadas a cabo en la pantalla. Compose nos permite crear de manera más flexible los `FABs` con respecto a los diseños XML. ```kotlin= @Composable fun FloatingActionButton( onClick: () -> Unit, modifier: Modifier = Modifier, interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, shape: Shape = MaterialTheme.shapes.small.copy(CornerSize(percent = 50)), backgroundColor: Color = MaterialTheme.colors.secondary, contentColor: Color = contentColorFor(backgroundColor), elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(), content: @Composable () -> Unit ) ``` - **onClick**: función lanzada al pulsar el FAB. - **modifier**: el modificador aplicado en el FAB. - **interactionState**:diferentes estados que pueden ser representados por el FAB con las diferentes interacciones del usuario. - **shape**: forma aplicada al fondo del FAB. - **backgroundColor**: color de fondo del FAB. - **contentColor**: color del contenido del FAB. - **elevation**: elevación del FAB. - **content**: contenido del FAB. Un ejemplo de uso, usando varios de los parámetros: ```kotlin FloatingActionButton( onClick = { /*TODO*/ }, modifier = Modifier.padding(2.dp), backgroundColor = Color.Yellow, elevation = elevation(20.dp), shape = CutCornerShape(8.dp)){ Icon(Icons.Filled.Favorite, contentDescription = "Icon") } ``` ![FAB example](https://i.imgur.com/Bpui9xT.png) ## La función `ExtendedFloatingActionButton` Es un componente muy particular, usado para mostrar texto además del icono de acción típico de un FAB. Además, no tiene parámetro `content` clásico en Compose, sino que lo sustituye por text, donde incluiremos el contenido. ```kotlin= ExtendedFloatingActionButton(text = { Row(verticalAlignment = Alignment.CenterVertically) { Icon( Icons.Filled.Favorite, contentDescription = "Icon" ) Spacer(modifier = Modifier.size(4.dp)) Text(text = "Favorito") } }, onClick = { /*TODO*/ }) ``` ![](https://i.imgur.com/G2OyVYH.png)