Standardowy zestaw emotikonów jest odświeżany co roku przez Unicode wraz ze wzrostem korzystania z emotikonów dla wszystkich typów aplikacji.
Jeśli Twoja aplikacja wyświetla treści internetowe lub umożliwia wprowadzanie tekstu, zalecamy obsługę najnowszych czcionek emoji. W przeciwnym razie późniejsze emotikony mogą być wyświetlane jako małe kwadratowe pole o nazwie tofu (☐) lub inne nieprawidłowo renderowane sekwencje emotikonów.
Android w wersji 11 (poziom interfejsu API 30) i starszych nie może aktualizować czcionki emotikonów, więc aplikacje, w których są wyświetlane, należy zaktualizować ręcznie.
Oto przykłady nowoczesnych emotikonów.
Przykłady | Wersja |
---|---|
🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (wrzesień 2021 r.) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (wrzesień 2020 r.) |
🥲 🥷🏿 🐻❄️ | 13.0 (marzec 2020 r.) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (październik 2019 r.) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (luty 2019 r.) |
BOM z marca 2023 r. (interfejs tworzenia wiadomości 1.4) obsługuje najnowszą wersję emotikonów, w tym wsteczną kompatybilność ze starszymi wersjami Androida aż do poziomu interfejsu API 21.
Ta pomoc nie wymaga wprowadzania żadnych zmian w aplikacji – jeśli używasz Text
i
TextField
(Materiał 2 lub Materiał 3) lub BasicText
i
BasicTextField
– nowoczesną obsługę emotikonów od razu po uruchomieniu.
Najlepszym sposobem na przetestowanie najnowszych emotikonów w aplikacji jest użycie rzeczywiste urządzenia z interfejsem API w wersji 30 lub starszej.
Jeśli używasz niestandardowych emotikonów lub chcesz wyłączyć domyślny emotikon
w funkcji tworzenia wiadomości z innego powodu, możesz użyć
PlatformTextStyle(emojiSupportMatch)
:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
Interoperacyjność
Jeśli w aplikacji w tym samym interfejsie Activity
używasz jednocześnie widoków i tworzenia wiadomości, upewnij się,
korzystają z odpowiednich interfejsów API, aby poprawnie konfigurować emotikony. Poniżej
W sekcjach znajdziesz informacje o tym, kiedy należy używać poszczególnych interfejsów API.
Obowiązuje od ComponentActivity
Jeśli Activity
wykracza poza opcję Utwórz ComponentActivity
zamiast
AppCompatActivity
, postępuj zgodnie z emotikonami pomocy bez użycia AppCompat
za instrukcje.
Ponieważ nie rozszerzasz widoku AppCompatActivity
, dodaj do zależności bibliotekę Emoji2 i użyj w widokach elementu EmojiTextView
zamiast widżetu TextView
, jak pokazano w tym fragmencie kodu:
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 } } } }
Następnie w pliku XML:
<androidx.emoji2.widget.EmojiTextView android:id="@+id/emoji_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
Obowiązuje od AppCompatActivity
Jeśli Activity
obejmuje dłuższy okres niż AppCompatActivity
, możesz korzystać z
ComposeView
, aby wywołać funkcje kompozycyjne. Emotikony renderują się poprawnie na całej długości
wersje Androida, które korzystają z funkcji kompozycyjnych tekstowych.
Jeśli rozszerzasz zakres z AppCompatActivity
, zwiększ wartość TextView
z XML
aby emotikony były renderowane prawidłowo.
Dzieje się tak, gdy zwiększasz zawartość pliku XML:
- spoza
ComposeView
, wActivity
. Zwróć uwagę na użycieAppCompatActivity
iTextView
w tym fragmencie:
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 } } } }
- w komponencie
ComposeView
za pomocą wiązania widoku za pomocąAndroidViewBinding
, jak w tym fragmencie kodu:
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 } } } } ) } }
Aby powiększyć tekst za pomocą symbolu AndroidView
w elemencie ComposeView
, użyj
AppCompatTextView
, aby prawidłowo renderować emotikony:
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 } ) } } } ) } }
Szczegółowe informacje znajdziesz w dokumentacji interfejsów API współdziałania.
Rozwiązywanie problemów
Jeśli zamiast emotikonu widzisz tofu (☐), najpierw sprawdź, czy problem jest konkretne urządzenie testowe. Oto kilka głównych rzeczy, które możesz sprawdzić:
- Być może używasz urządzenia, na którym ostatnio zainstalowano aktualizację lub nowego emulatora. Jeśli spróbuj zalogować się na inne urządzenie testowe, którego często używasz. swoje konto Google. Pamiętaj, że interfejs API powinien mieć wartość 30 lub niższą, aby zapewnić emotikony działają we właściwych wersjach.
- Telefon testowy nie obsługuje czcionek, które można pobrać.
- Sprawdź prawidłową wersję Usług Google Play.
Polecane dla Ciebie
- Uwaga: tekst linku wyświetla się, gdy JavaScript jest wyłączony
- Inne uwagi
- Tekst w narzędziu Compose
- Przewiń