Es gibt viele oft verwendet Materialsymbole in androidx.compose.material.icons.Icons aber einige fehlen. Nur als Beispiel gibt es keine Drucksymbol.
...
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
}
Was ist der einfachste Weg, diese fehlenden Symbole in einer App zu verwenden?
Es gibt eine separate Abhängigkeit material-icons-extended
die die vollständige Liste der Materialsymbole enthält, fügen Sie sie einfach zu Ihrer App hinzu build.gradle
dependencies {
...
implementation "androidx.compose.material:material-icons-extended:$compose_version"
}
Jetzt können Sie ein beliebiges Materialsymbol verwenden, zum Beispiel:
...
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
}
Ein Hinweis zur Artefaktgröße: Da das Artefakt alle Materialsymbole für mehrere Themen enthält, ist es eine ziemlich große Abhängigkeit, derzeit 18 MB 1.0.0-alpha10
. Da ist ein Hinweis zum Maven-Repository das empfiehlt, es nicht direkt zu verwenden:
Dieses Modul enthält alle Materialsymbole. Es ist eine sehr große Abhängigkeit und sollte nicht direkt aufgenommen werden.
In Anbetracht dessen, dass die meisten Android-Projekte ermöglichen Code schrumpft Bei Release-Builds wirkt sich eine so große Abhängigkeit nicht auf die Größe des Release-Builds aus, aber sie kann sich auf Ihre Debug-Build- und Geräte-Upload-Zeit auswirken, obwohl ich nicht sicher bin, ob der Einfluss signifikant wäre. Eigentlich viele Proben zusammenstellen Verwenden Sie diese Abhängigkeit.
Wenn nur wenige zusätzliche Symbole benötigt werden und Sie sich gegen eine Verwendung entschieden haben material-icons-extended
Artefakt können die Symbole einfach zu Ihren Projektressourcen hinzugefügt werden mit Android Studio. Sie können solche Ressourcensymbole wie folgt verwenden:
...
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"
)
}