Как удалить индикатор овальной формы из элемента панели навигации на панели навигации (составление Jetpack)?Android

Форум для тех, кто программирует под Android
Anonymous
Как удалить индикатор овальной формы из элемента панели навигации на панели навигации (составление Jetpack)?

Сообщение Anonymous »

На NaviagtionBar, который я использую, на самом деле имеется эффект градиента, меняющийся от прозрачного к черному цвету с альфа-значениями черного цвета между ними. Цвет моего контейнера прозрачный, но в активном навигационном элементе за значком овальной формы есть индикатор (как на картинке). Я хочу удалить это или сделать прозрачным, но это не работает.

Код: Выделить всё

@Composable
fun BottomBar(navController: NavHostController) {
val screens = listOf(
BottomNavItems.Home,
BottomNavItems.Search,
BottomNavItems.Library
)
val navStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navStackEntry?.destination
val gradientColors = listOf(
Color.Black.copy(alpha = 0f),
Color.Black.copy(alpha = 0.7f),
Color.Black.copy(alpha = 0.9f),
Color.Black
)
val colors = NavigationBarItemDefaults.colors(
selectedIconColor =Color.White,
unselectedIconColor = Color.Gray,
indicatorColor = Color.Transparent
)
NavigationBar(
modifier = Modifier
.height(65.dp)
.background(
brush = Brush.verticalGradient(
colors = gradientColors,
)
),
containerColor = Color.Transparent,
windowInsets = WindowInsets(left = 30.dp, right = 30.dp, bottom = 15.dp)
) {
screens.forEach { screen ->
AddItem(
screen = screen,
currentDestination = currentDestination,
navController = navController
)
}
}
}

@Composable
fun RowScope.AddItem(
screen: BottomNavItems,
currentDestination: NavDestination?,
navController: NavHostController
) {
NavigationBarItem(
selected = currentDestination?.hierarchy?.any {
it.route == screen.route
} == true,
onClick = {
if (currentDestination?.hierarchy?.any {
it.route == screen.route
} == false) {
navController.navigate(screen.route) {
popUpTo(navController.graph.findStartDestination().id)
launchSingleTop = true
}
}
},
alwaysShowLabel = true,
label = {

},
icon = {
Column(
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Icon(
painter = painterResource(id = screen.icon),
contentDescription = screen.name,
modifier = Modifier.size(30.dp)
)
Text(text = screen.name, style = MaterialTheme.typography.labelSmall)
}
},
colors = NavigationBarItemDefaults
.colors(
selectedIconColor = Color.White,
unselectedIconColor = Color.Gray,
indicatorColor = MaterialTheme.colorScheme.surfaceColorAtElevation(LocalAbsoluteTonalElevation.current).copy(alpha = 0f)
)
)
}

Вот изображение, о котором я говорю
Изображение
Я пробовал и проверял, меняя

Код: Выделить всё

indicatorColor = MaterialTheme.colorScheme.surfaceColorAtElevation(LocalAbsoluteTonalElevation.current).copy(alpha = 0f)
на различные другие значения, а также изменив его на Color.Transparent. Но всегда остается темным.

Подробнее здесь: https://stackoverflow.com/questions/766 ... ionbar-jet

Вернуться в «Android»