Android Jetpack Compose Icons 不包含某些素材图标
Posted
技术标签:
【中文标题】Android Jetpack Compose Icons 不包含某些素材图标【英文标题】:Android Jetpack Compose Icons doesn't contain some of the material icons 【发布时间】:2021-04-16 07:39:39 【问题描述】:androidx.compose.material.icons.Icons 中有许多常用的material icons,但有些缺失。举个例子,没有print icon。
...
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
在应用中使用这些缺失图标的最简单方法是什么?
【问题讨论】:
【参考方案1】:有一个单独的依赖项material-icons-extended
,其中包含材料图标的完整列表,只需将其添加到您的应用程序的build.gradle
dependencies
...
implementation "androidx.compose.material:material-icons-extended:$compose_version"
现在您可以使用任何材质图标,例如:
...
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
关于工件大小的说明: 由于工件包含多个主题的所有材质图标,因此它是一个相当大的依赖项,截至1.0.0-alpha10
为 18MB aar。有note on maven repository建议不要直接使用:
此模块包含所有 Material 图标。这是一个非常大的依赖,不应该直接包含。
考虑到大多数 Android 项目启用 code shrinking 进行发布构建,如此大的依赖不会影响发布构建大小,但它会影响您的调试构建和设备上传时间,尽管我不确定影响会很重要。实际上很多compose samples 都使用了这个依赖。
如果只需要几个额外的图标并且您决定不使用material-icons-extended
工件,则可以轻松地将这些图标添加到您的项目资源using Android Studio。您可以像这样使用此类资源图标:
...
import com.mycompany.myproject.R
import androidx.compose.ui.res.painterResource
@Composable
fun ResourceIconExample()
Icon(
painter = painterResource(R.drawable.ic_baseline_print_24),
contentDescription = "print"
)
【讨论】:
Google 似乎不建议包含repository 中所述的整个扩展图标集。你知道我们是否只能添加那些需要的额外图标吗? @JesseHill 感谢您的观察。我已经用一些附加信息更新了答案,包括不使用material-icons-extended
的图标示例,希望对您有所帮助!
请将此答案标记为可接受的答案
即使有扩展依赖,我仍然看不到 QuestionMark (fonts.google.com/…)...以上是关于Android Jetpack Compose Icons 不包含某些素材图标的主要内容,如果未能解决你的问题,请参考以下文章
Android Jetpack Compose学习—— Jetpack compose基础布局
Android Jetpack Compose学习—— Jetpack compose入门
Android Jetpack Compose学习—— Jetpack compose入门