En Jetpack Compose , ¿cómo eliminar (o cambiar la forma) el efecto dominó al hacer clic en un elemento?
Este es un ejemplo con NavigationBar de Material Design 3
var selectedItem by remember { mutableStateOf(0) } val items = listOf("Songs", "Artists", "Playlists") NavigationBar { items.forEachIndexed { index, item -> NavigationBarItem( icon = { Icon(Icons.Filled.Favorite, contentDescription = null) }, label = { Text(item) }, selected = selectedItem == index, onClick = { selectedItem = index } ) } } Intentando agregar un Modifier con
modifier = Modifier.clickable(interactionSource = interactionSource,indication = null){} tanto en NavigationBar como en NavigationBarItem , no funciona.
Puede hacerlo proporcionando LocalRippleTheme . Todas las vistas dentro del content de CompositionLocalProvider no tendrán ondulación.
CompositionLocalProvider( LocalRippleTheme provides ClearRippleTheme ) { NavigationBar { items.forEachIndexed { index, item -> NavigationBarItem( icon = { Icon(Icons.Filled.Favorite, contentDescription = null) }, label = { Text(item) }, selected = selectedItem == index, onClick = { selectedItem = index } ) } } } ClearRippleTheme :
object ClearRippleTheme : RippleTheme { @Composable override fun defaultColor(): Color = Color.Transparent @Composable override fun rippleAlpha() = RippleAlpha( draggedAlpha = 0.0f, focusedAlpha = 0.0f, hoveredAlpha = 0.0f, pressedAlpha = 0.0f, ) }