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!