AndroidJetpackComposeIcons不包含部分材质图标

在androidx.compose.material.icons.Icons 中有许多常用的材质图标,但有些缺失。举个例子,没有打印图标。

...

import androidx.compose.material.Icon
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Menu  // ok
import androidx.compose.material.icons.filled.Print // error, unresolved reference

@Composable
fun IconsExample() {
    Icon(Icons.Filled.Menu, "menu")   // ok
    Icon(Icons.Filled.Print, "print") // error, unresolved reference
}

在应用程序中使用这些缺失图标的最简单方法是什么?

回答

有一个单独的依赖项material-icons-extended,其中包含完整的材料图标列表,只需将其添加到您的应用程序的build.gradle

dependencies {
  ...
  implementation "androidx.compose.material:material-icons-extended:$compose_version"
}

现在您可以使用任何材质图标,例如:

dependencies {
  ...
  implementation "androidx.compose.material:material-icons-extended:$compose_version"
}

关于工件大小的说明:由于工件包含多个主题的所有材质图标,因此它是一个非常大的依赖项,从1.0.0-alpha10. maven repository有个注释建议不要直接使用:

该模块包含所有 Material 图标。它是一个非常大的依赖项,不应直接包含在内。

? 考虑到大多数 Android 项目都为发布版本启用代码收缩,如此大的依赖不会影响发布版本的大小,但会影响您的调试版本和设备上传时间,尽管我不确定影响会很大。实际上,许多撰写示例都使用此依赖项。

如果只需要一些额外的图标并且您决定不使用material-icons-extendedartifact,则可以使用 Android Studio轻松地将这些图标添加到您的项目资源中。您可以像这样使用这样的资源图标:

...

import androidx.compose.material.Icon
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Menu  // ok
import androidx.compose.material.icons.filled.Print // ok

@Composable
fun IconsExample() {
    Icon(Icons.Filled.Menu, "menu")   // ok
    Icon(Icons.Filled.Print, "print") // ok
}

  • @JesseHill Thank you for the observation. I've updated the answer with some additional information including a sample of an icon which doesn't use `material-icons-extended`, hope it helps!

以上是AndroidJetpackComposeIcons不包含部分材质图标的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>