我正在Compose中创建一个应用程序,它有一个非常简单的导航栏,其中显示了两个项目:主页和星级:

@Composable
fun HomeScreen(modifier: Modifier) {
    var selectedItem by remember { mutableStateOf(0) }

    val items = listOf(
        stringResource(id = R.string.bottomNavigationMenu_home),
        stringResource(id = R.string.bottomNavigationMenu_starred)
    )

    val icons = listOf(
        Icons.Outlined.Home,
        Icons.Outlined.Star,
    )

    Box(
        modifier = modifier
    ) {
        Column(
            modifier = Modifier.fillMaxSize(),
            verticalArrangement = Arrangement.Bottom
        ) {
            NewProjectButton(
                modifier = Modifier
                    .padding(16.dp)
                    .align(Alignment.End)
            )

            NavigationBar {
                items.forEachIndexed { index, item ->
                    NavigationBarItem(
                        icon = {
                            Icon(icons[index], contentDescription = item) },
                        label = {
                            Text(item)
                        },
                        selected = selectedItem == index,
                        onClick = { selectedItem = index }
                    )
                }
            }
        }
    }
}

输出如下所示(我必须嵌入链接,因为当我try 执行其他操作时,StackOverflow会给我一个错误):

https://i.imgur.com/HYo6ETs.png

正如你可能从图像中看到的,星星没有被勾勒出来,而是被填满了.我想知道这是可以修复的,还是内部错误.

编辑1

这似乎是Compose中的一个内部错误,不管它是否已经在更新的版本上修复了,我不知道,但我使用的是最新的候选版本,所以它不太可能.我已经在这里向谷歌提交了一个问题请求:https://issuetracker.google.com/u/1/issues/253388323

推荐答案

我认为星形轮廓形状在material 标准图标上是不可用的,但您可以 Select 使用扩展图标库androidx.compose.material:material-icons-extended依赖项,它包含完整的material 图标集.

但是,由于该库太大,因此不鼓励这样做.这样,您就可以 Select 使用Android Studio's Import vector asset.特写.

为此,您可以执行以下步骤Right Click on Drawable Folder->;New->;Vector Asset->;Select Clip Art Radio Button->;Click on Clip Art Button->;search for 'Star Outline' on the search box->;Next->;Finish.按照相同的步骤为主页图标导入另一个向量.

然后,您可以创建一个painterResource列表,如下所示.

val icons = listOf(
            painterResource(id = R.drawable.ic_outline_star),
            painterResource(id = R.drawable.ic_empty_home)
    )

之后,您可以对索引处的图标使用相同的代码.

Android相关问答推荐

理解修饰符<;方法>;与修饰符<;方法>;:效果和行为解释(Android开发者Jetpack Compose)

Android Jetpack Compose Material3主题配色方案

泛型类型lambda函数参数作为函数参数

如何使用Jetpack Compose实现此底表?

在以XML格式设置完整屏幕视图时可见App Compat按钮

如何在Jetpack Compose中向SearchBar添加边框

看不到选项菜单栏

为什么我的 APK 中包含来自旧版 Android 支持库的类?

如何在我的sqlite数据库中获取某个玩家的分数

在 AGP 8.0 中构建失败,无法应用插件realm-android. APIandroid.registerTransform已删除

如何在 React Native 中调试网络响应

如何在 Jetpack Compose 中设置卡片高度

当包含可绘制对象的整数变量传递给 painterResource 函数时,为什么图像不在 Android Studio 中呈现?

Jetpack 将 Grid 与基于大小的自适应列数组合在一起

在compose中,为什么修改List元素的属性,LazyColumn不刷新

如何从日期 Select 器计算年龄?

Material Design 网站的新设计已启动,但我找不到实现选项卡,该选项卡在哪里?

Jetpack Compose TextField 在输入新字符时不更新

如何在 Jetpack Compose 中擦除画布时变得透明,现在我得到白色?

在jetpack compose中看不到圆角