我們每年都會更新多種標準表情符號, 萬國碼 (Unicode),因為表情符號使用日漸增加 且能在各種應用程式中快速部署
如果應用程式會顯示網際網路內容或提供文字輸入,強烈建議 建議支援最新的表情符號字型否則,之後的表情符號可能會 顯示為名為 tofu (☐) 的小方方塊,或顯示其他錯誤 表情符號序列。
Android 11 (API 級別 30) 以下版本無法更新表情符號字型, 如果在這些版本中顯示您的應用程式,就必須手動更新。
以下是現代表情符號的範例。
範例 | 版本 |
---|---|
🫠? 🫱? 🫲? 🫰? 🫰?遊 | 14.0 (2021 年 9 月) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (2020 年 9 月) |
🥲 🥷🏿 🐻❄️ | 13.0 (2020 年 3 月) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (2019 年 10 月) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (2019 年 2 月) |
2023 年 3 月 BOM (Compose UI 1.4) 支援最新表情符號 版本,包括與舊版 Android 回溯相容 至 API 21
無須變更應用程式,即可使用這項支援功能。如果您使用 Text
且
TextField
(Material 2 或 Material 3) 或 BasicText
,以及
BasicTextField
則內建新式表情符號支援。
如果想在應用程式中測試最新的表情符號,最好的方法就是使用 使用 API 30 以下版本 並安裝實體裝置
如果您使用自訂表情符號解決方案,或需要停用預設表情符號
任何其他原因,您可以使用
PlatformTextStyle(emojiSupportMatch)
:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
可互通
如果應用程式在同一個 Activity
中同時使用 View 和 Compose,請確認您
使用合適的 API 正確設定表情符號。下列
。
從「ComponentActivity
」延伸
如果 Activity
從 Compose ComponentActivity
延伸而來,而不是
AppCompatActivity
,依循不使用 AppCompat 支援表情符號
操作說明。
由於您並未擴充 AppCompatActivity
,因此請新增 Emoji2
加入依附元件的程式庫,並在檢視畫面中使用 EmojiTextView
而非 TextView
小工具,如以下程式碼片段所示:
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 } } } }
接著在 XML 檔案中:
<androidx.emoji2.widget.EmojiTextView android:id="@+id/emoji_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
從「AppCompatActivity
」延伸
如果 Activity
從 AppCompatActivity
擴充,您可以使用
ComposeView
來呼叫可組合函式。表情符號在各種平台中都能正確顯示
使用 Text 可組合函式時產生的 Android 版本。
如果要從 AppCompatActivity
延伸,請透過 XML 加載 TextView
才能正確顯示表情符號
如果是加載 XML,則適用以下情況:
ComposeView
外部的Activity
。請注意 以下程式碼片段中的AppCompatActivity
和TextView
:
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 } } } }
- 在
ComposeView
內 (透過檢視區塊繫結)AndroidViewBinding
,如以下程式碼片段所示:
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 } } } } ) } }
如要在 ComposeView
中使用 AndroidView
加載文字,請使用
使用 AppCompatTextView
正確顯示表情符號:
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 } ) } } } ) } }
詳情請參閱互通性 API 說明文件。
疑難排解
如果系統顯示「tofu」 (☐),而不是表情符號,請先檢查問題是否出在 測試裝置。請檢查幾個主要項目:
- 你可能使用的是最近刷新的裝置或新的模擬器。如果 您可以改用其他常用的實際測試裝置 您的 Google 帳戶。提醒您,API 應為 30 以下, 表情符號可在正確版本中使用。
- 測試手機不支援可下載的字型。
- 檢查正確的 Google Play 服務版本。
為您推薦
- 注意:系統會在 JavaScript 關閉時顯示連結文字
- 其他考量
- Compose 中的文字
- 捲動