Standardowy zestaw emotikonów jest odświeżany co roku przez Unicode, bo rośnie wykorzystanie emotikonów dla wszystkich typów aplikacji.
Jeśli aplikacja wyświetla treści internetowe lub umożliwia wpisywanie tekstu, zdecydowanie zalecamy obsługę najnowszych czcionek emotikonów. W przeciwnym razie później 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 – marzec 2023 r. (interfejs tworzenia wiadomości 1.4) wprowadza obsługę najnowszych emotikonów , w tym zgodność wsteczną ze starszymi wersjami Androida. do 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.
Nie masz rozszerzenia AppCompatActivity
, więc dodaj Emoji2
biblioteka do zależności i używać EmojiTextView
w widokach
zamiast widżetu TextView
, jak widać w tym fragmencie:
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:
- na zewnątrz
ComposeView
, w:Activity
. 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
ComposeView
, przez powiązanie widoku przy użyciuAndroidViewBinding
, np. w tym fragmencie:
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ń