Der Standard-Emoji-Satz wird jährlich aktualisiert von Unicode: Die Nutzung von Emojis nimmt zu. für alle Arten von Apps.
Wenn Ihre App Internetinhalte oder Texteingabe anzeigt, empfehlen wir Ihnen dringend, empfehlen, die neuesten Emoji-Schriftarten zu unterstützen. Andernfalls kann es passieren, dass später Wird als kleines quadratisches Feld namens Tofu (☐) oder ein anderes falsch gerendertes Element angezeigt Emoji-Sequenzen.
Bei Android-Versionen 11 (API-Level 30) und niedriger kann die Emoji-Schriftart nicht aktualisiert werden. Apps, in denen Emojis in diesen Versionen angezeigt werden, müssen daher manuell aktualisiert werden.
Hier einige 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) |
BOM März 2023 (Compose UI 1.4) unterstützt die neueste Emojis Version, einschließlich Abwärtskompatibilität mit älteren Android-Versionen auf API 21.
Für diese Unterstützung sind keine Änderungen an deiner App erforderlich, wenn du Text
und
TextField
(Material 2 oder Material 3) oder BasicText
und
BasicTextField
, du erhältst moderne Emoji-Unterstützung, sofort einsatzbereit.
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 deine App im selben Activity
sowohl „Aufrufe“ als auch „Schreiben“ verwendet,
verwenden die entsprechenden APIs, um Emojis richtig zu konfigurieren. Die folgenden
beschreiben, wann die einzelnen APIs verwendet werden.
Wird verlängert von ComponentActivity
Wenn Activity
auf „Schreiben“ ComponentActivity
statt auf
AppCompatActivity
, folgen Sie dem Support-Emoji ohne AppCompat.
Anleitung.
Da Sie AppCompatActivity
nicht erweitern, fügen Sie das Emoji2-Element hinzu
Bibliothek zu Ihren Abhängigkeiten hinzu und verwenden Sie EmojiTextView
in Ihren Ansichten.
statt des Widgets TextView
verwenden, 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" />
Wird verlängert von AppCompatActivity
Wenn sich Ihr Activity
-Gerät von AppCompatActivity
erstreckt, können Sie Folgendes verwenden:
ComposeView
, um zusammensetzbare Funktionen aufzurufen. Emojis werden korrekt gerendert
Android-Versionen, wenn Sie zusammensetzbare Textfunktionen verwenden
Wenn Sie von AppCompatActivity
aus erweitern, müssen Sie TextView
aus XML aufblähen, damit Emojis korrekt gerendert werden.
Dies gilt, wenn Sie die XML-Datei künstlich in die Höhe treiben:
- außerhalb von
ComposeView
, inActivity
. 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 überprüfen:
- Möglicherweise verwendest du 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. Denken Sie daran, dass die API 30 oder weniger sein muss, um sicherzustellen, und Emojis funktionieren in der richtigen Version.
- Das Testtelefon unterstützt keine herunterladbaren Schriftarten.
- Prüfen Sie die richtige Version der Google Play-Dienste.
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Weitere Hinweise
- Text in „Schreiben“
- Scrollen