Der Standardsatz an Emojis wird jährlich von Unicode aktualisiert, da die Verwendung von Emojis in allen Arten von Apps rasant zunimmt.
Wenn Ihre App Internetinhalte anzeigt oder Texteingaben ermöglicht, empfehlen wir dringend, die neuesten Emoji-Schriftarten zu unterstützen. Andernfalls werden neuere Emojis möglicherweise als kleines quadratisches Kästchen, sogenanntes Tofu (☐), oder andere falsch gerenderte Emoji-Sequenzen angezeigt.
Bei Android-Versionen 11 (API-Level 30) und niedriger kann die Emoji-Schriftart nicht aktualisiert werden. Apps, die Emojis in diesen Versionen anzeigen, müssen daher manuell aktualisiert werden.
Im Folgenden finden Sie Beispiele für moderne Emojis.
| Beispiele | Version |
|---|---|
| 🇨🇶 | 16.0 (September 2024) |
| 🐦🔥 🧑🧑🧒🧒 👩🏽🦽➡️ 🇲🇶 | 15.1 (September 2023) |
| 🩷 🫸🏼 🐦⬛ | 15.0 (September 2022) |
| 🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (September 2021) |
| 😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (September 2020) |
| 🥲 🥷🏿 🐻❄️ | 13.0 (März 2020) |
| 🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (Oktober 2019) |
| 🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (Februar 2019) |
Die BOM vom März 2023 (Compose UI 1.4) bietet Unterstützung für die neueste Emoji Version, einschließlich Abwärtskompatibilität mit älteren Android-Versionen bis API 21.
Für diese Unterstützung sind keine Änderungen an Ihrer App erforderlich. Wenn Sie Text und
TextField (Material 2 oder Material 3) oder BasicText und
BasicTextField verwenden, erhalten Sie sofort Unterstützung für moderne Emojis.
Die beste Möglichkeit, die neuesten Emojis in Ihrer App zu testen, ist die Verwendung eines echten Geräts mit API 30 oder niedriger.
Wenn Sie eine benutzerdefinierte Emoji-Lösung verwenden oder die Standard-Emoji
Auflösung in Compose aus einem anderen Grund deaktivieren müssen, können Sie
PlatformTextStyle(emojiSupportMatch) verwenden:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
Interoperabilität
Wenn Ihre App sowohl Views als auch Compose in derselben Activity verwendet, müssen Sie die entsprechenden APIs verwenden, um Emojis korrekt zu konfigurieren. In den folgenden Abschnitten wird beschrieben, wann die einzelnen APIs verwendet werden sollten.
Erweitern von ComponentActivity
Wenn Ihre Activity von Compose ComponentActivity anstelle von
AppCompatActivity erweitert wird, folgen Sie der Anleitung unter Emojis ohne AppCompat unterstützen.
Da Sie AppCompatActivity nicht erweitern, fügen Sie die Emoji2
Bibliothek zu Ihren Abhängigkeiten hinzu und verwenden Sie in Ihren Ansichten EmojiTextView anstelle des Widgets TextView, wie im folgenden Snippet gezeigt:
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: EmojiTextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
Dann in Ihrer XML-Datei:
<androidx.emoji2.widget.EmojiTextView android:id="@+id/emoji_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
Erweitern von AppCompatActivity
Wenn Ihre Activity von AppCompatActivity erweitert wird, können Sie
ComposeView verwenden, um zusammensetzbare Funktionen aufzurufen. Emojis werden in allen Android-Versionen korrekt gerendert, wenn Sie zusammensetzbare Textfunktionen verwenden.
Wenn Sie AppCompatActivity erweitern, blähen Sie TextView aus XML
auf, damit Emojis korrekt gerendert werden.
Dies gilt, wenn Sie die XML-Datei aufblähen:
- außerhalb von
ComposeViewin derActivity. Beachten Sie die Verwendung vonAppCompatActivityundTextViewim folgenden Snippet:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: TextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
- innerhalb von
ComposeViewüber die Ansichtsbindung mitAndroidViewBinding, wie im folgenden Snippet:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidViewBinding(ExampleViewBinding::inflate) { emojiTextView.text = EMOJI_TEXT } } } } ) } }
Wenn Sie einen Text mit AndroidView innerhalb von ComposeView aufblähen möchten, verwenden Sie
AppCompatTextView, um Emojis korrekt zu rendern:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidView( factory = { context -> AppCompatTextView(context) }, update = { it.text = EMOJI_TEXT } ) } } } ) } }
Weitere Informationen finden Sie in der Dokumentation zu Interoperabilitäts-APIs.
Fehlerbehebung
Wenn Sie anstelle des Emojis Tofu (☐) sehen, prüfen Sie zuerst, ob das Problem an Ihrem spezifischen Testgerät liegt. Es gibt einige Hauptpunkte, die Sie überprüfen können:
- Möglicherweise verwenden Sie ein Gerät, das kürzlich geflasht wurde, oder einen neuen Emulator. Versuchen Sie nach Möglichkeit ein anderes echtes Testgerät, das Sie häufig verwenden und in dem Sie in Ihrem Google-Konto angemeldet sind. Die API sollte 30 oder niedriger sein, damit Emojis in den richtigen Versionen funktionieren.
- Das Testgerät unterstützt keine herunterladbaren Schriftarten.
- Prüfen Sie die richtige Version der Google Play-Dienste.
Empfehlungen für Sie
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist
- Weitere Überlegungen
- Text in Compose
- Scrollen