Die Standard-Emojis werden jährlich von Unicode aktualisiert, da die Emoji-Nutzung in allen Arten von Apps rapide zunimmt.
Wenn Ihre App Internetinhalte anzeigt oder eine Texteingabe ermöglicht, empfehlen wir dringend, die neuesten Emoji-Schriftarten zu unterstützen. Andernfalls werden spätere Emojis möglicherweise als kleines quadratisches Kästchen namens Tofu (☐) oder andere falsch gerenderte Emoji-Sequenzen angezeigt.
Unter Android 11 (API-Level 30) kann die Emoji-Schriftart nicht aktualisiert werden. Apps, in denen Emojis in diesen Versionen angezeigt werden, müssen daher manuell aktualisiert werden.
Im Folgenden finden Sie Beispiele für moderne Emojis.
Beispiele | Version |
---|---|
🫠 🫱🏼🫲🏿 🫰🏽 | 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) unterstützt die aktuelle Emoji-Version und ist abwärtskompatibel 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, wird moderne Emoji-Unterstützung standardmäßig unterstützt.
Die neuesten Emojis in Ihrer App lassen sich am besten auf einem echten Gerät mit API 30 oder niedriger testen.
Wenn Sie eine benutzerdefinierte Emoji-Lösung verwenden oder die Standard-Emoji-Auflösung im Tool zum Verfassen aus einem anderen Grund deaktivieren möchten, können Sie PlatformTextStyle(emojiSupportMatch)
verwenden:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
Interoperabilität
Wenn Ihre App sowohl „Ansichten“ als auch „Schreiben“ in derselben Activity
verwendet, müssen Sie die entsprechenden APIs verwenden, um Emojis richtig zu konfigurieren. In den folgenden Abschnitten wird beschrieben, wann Sie die einzelnen APIs verwenden sollten.
Verlängerung von ComponentActivity
Wenn sich Ihre Activity
von „Schreiben“ ComponentActivity
statt von AppCompatActivity
erstreckt, 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 } } } }
Gehen Sie dann in Ihrer XML-Datei so vor:
<androidx.emoji2.widget.EmojiTextView android:id="@+id/emoji_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
Verlängerung von AppCompatActivity
Wenn sich Activity
von AppCompatActivity
ableitet, können Sie mit ComposeView
zusammensetzbare Funktionen aufrufen. Emojis werden bei Verwendung von Text-Kompositen in allen Android-Versionen korrekt gerendert.
Wenn Sie AppCompatActivity
erweitern, müssen Sie TextView
aus XML aufblähen, damit Emojis korrekt gerendert werden.
Das gilt, wenn Sie die XML-Datei aufblähen:
- außerhalb von
ComposeView
, in derActivity
. Beachten Sie die Verwendung vonAppCompatActivity
undTextView
im 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 } } } }
- in
ComposeView
über 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 du einen Text mit AndroidView
in ComposeView
maximieren möchtest, verwende 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 anstelle des Emojis Tofu (☐) angezeigt wird, prüfen Sie zuerst, ob das Problem auf Ihrem Testgerät liegt. Sie können Folgendes prüfen:
- Möglicherweise verwenden Sie ein vor Kurzem geflashtes Gerät oder einen neuen Emulator. Verwenden Sie nach Möglichkeit ein anderes echtes Testgerät, das Sie häufig verwenden und auf dem Sie in Ihrem Google-Konto angemeldet sind. Die API darf maximal 30 sein, damit Emojis in den richtigen Versionen funktionieren.
- Das Testgerät unterstützt keine herunterladbaren Schriftarten.
- Prüfen Sie, ob die richtige Version der Google Play-Dienste installiert ist.
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Weitere Hinweise
- Text im Eingabefeld
- Scrollen