Как создать темы для `NavigationBar()` и `NavigationBarItem()` в Jetpack Compose?

Мне ужасно трудно изменить цвет (цвета) выбранных / невыбранных значков и активного индикатора. В документах нет примеров или надлежащих Kdoc, и я не могу найти какие-либо примеры в Интернете (пожалуйста, укажите мне какие-либо известные вам). Значки просто не меняют свой цвет и остаются черными.

Мой NavigationBarвыглядит так:

      NavigationBar(
    containerColor = NavBarColor,
    contentColor = ContentColor, // <-- Can't tell what this is for.
    modifier = Modifier
        .align(Alignment.BottomCenter)
) {
    // ...
    destinations.forEachIndexed { index, item ->
        NavigationBarItem(
            selected = currentDestination?.hierarchy?.any { it.route == item.route } == true,

            onClick = {
                // ...
            },

            icon = {
                when (index) {
                    0 -> {
                        Icon(
                            imageVector = Icons.Rounded.Add,
                            contentDescription = stringResource(id = item.description)
                        )
                    }
                    1 -> {
                        Icon(
                            imageVector = Icons.Rounded.Home,
                            contentDescription = stringResource(id = item.description)
                        )
                    }
                    2 -> {
                        Icon(
                            imageVector = Icons.Rounded.Call,
                            contentDescription = stringResource(id = item.description)
                        )
                    }
                }
            },

            // Why on Earth does this not want to work:
            colors = NavigationBarItemDefaults.colors(
                selectedIconColor = NavBarColor, // <-- This doesn't work.
                unselectedIconColor = ContentColor, // <-- This doesn't work.
                indicatorColor = ContentColor // <-- This works.
            )
        )
    }
}

1 ответ

Использовать import androidx.compose.material3.Iconдля вашего значка.

Здесь вы смешиваете код материала и материала3: Iconимпортируется из материала и использует материал, с другой стороны NavigationBarItemявляется представлением материала3 и предоставляет материал3 LocalContentColor.