material icons 中有许多经常使用的 androidx.compose.material.icons.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
}
在应用中使用这些缺失图标的最简单方法是什么?
答案 0 :(得分:13)
有一个单独的依赖项 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"
)
}