Android Jetpack Compose Icons enthält einige der Materialsymbole nicht

Lesezeit: 3 Minuten

Benutzer-Avatar
Walerij Katkow

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?

Benutzer-Avatar
Walerij Katkow

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"
    )
}

  • Es scheint, dass Google davon abrät, den gesamten Satz erweiterter Symbole aufzunehmen, wie auf der angegeben Repository. Wissen Sie, ob wir nur die zusätzlichen Symbole hinzufügen können, die benötigt werden?

    – Jess Hill

    20. Januar 2021 um 18:25 Uhr

  • @JesseHill Vielen Dank für die Beobachtung. Ich habe die Antwort mit einigen zusätzlichen Informationen aktualisiert, einschließlich eines Beispiels für ein Symbol, das nicht verwendet wird material-icons-extendedich hoffe es hilft!

    – Walerij Katkow

    21. Januar 2021 um 10:10 Uhr

  • Bitte markieren Sie diese Antwort als akzeptabel

    – Androbito

    31. August 2021 um 9:27 Uhr

  • Ich kann QuestionMark immer noch nicht sehen (fonts.google.com/…) zum Beispiel sogar mit der erweiterten Abhängigkeit …

    – Barry Irvine

    8. Februar um 11:55 Uhr


  • Tolle Antwort, danke. Um nur ein paar Symbole zu erhalten, habe ich eine isolierte Compose-App erstellt, die enthalten ist material_icons_extended, sprang zur Definition der gewünschten Symbole und kopierte den Code in mein Projekt. Ich habe es in unseren eigenen Namensraum gestellt, damit ich verfolgen kann, welche verwendet werden usw. Ein wenig umständlich, aber minimaler Overhead! Jedes Symbol ist nur ein privates und ein öffentliches Eigentum, das war’s.

    – Robert Jeppesen

    18. März um 7:29 Uhr

1186870cookie-checkAndroid Jetpack Compose Icons enthält einige der Materialsymbole nicht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy