ننصحك بشدة بتوفير الدعم لأحدث خطوط الإيموجي إذا كان تطبيقك يعرض محتوى من الإنترنت أو يتيح إدخال النصوص. وإلا، قد تظهر رموز الإيموجي الأحدث على شكل مربّع صغير يُعرف باسم توفو (☐) أو تسلسلات أخرى من رموز الإيموجي يتم عرضها بشكل غير صحيح.
لا يمكن للإصدارات 11 (المستوى 30 لواجهة برمجة التطبيقات) والإصدارات الأقدم من Android تحديث خط الإيموجي، لذا يجب تحديث التطبيقات التي تعرضها على هذه الإصدارات يدويًا.
في ما يلي أمثلة على رموز الإيموجي الحديثة:
| أمثلة | الإصدار |
|---|---|
| 🇨🇶 | 16.0 (سبتمبر 2024) |
| 🐦🔥 🧑🧑🧒🧒 👩🏽🦽➡️ 🇲🇶 | 15.1 (سبتمبر 2023) |
| 🩷 🫸🏼 🐦⬛ | 15.0 (سبتمبر 2022) |
| 🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (سبتمبر 2021) |
| 😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (سبتمبر 2020) |
| 🥲 🥷🏿 🐻❄️ | 13.0 (مارس 2020) |
| 🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (أكتوبر 2019) |
| 🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (فبراير 2019) |
BOM مارس 2023 (واجهة مستخدم Compose 1.4) يتيح دعم أحدث إصدار من رموز الإيموجي، بما في ذلك التوافق مع الإصدارات القديمة من Android وصولاً إلى المستوى 21 لواجهة برمجة التطبيقات.
لا يتطلّب هذا الدعم إجراء أي تغييرات على تطبيقك، فإذا كنت تستخدم Text و
TextField (Material 2 أو Material 3) أو BasicText و
BasicTextField، سيتوفّر لك دعم رموز الإيموجي الحديثة تلقائيًا.
أفضل طريقة لاختبار أحدث رموز الإيموجي في تطبيقك هي استخدام جهاز حقيقي يعمل على المستوى 30 لواجهة برمجة التطبيقات أو مستوى أقل.
إذا كنت تستخدم حلاً مخصّصًا لرموز الإيموجي أو تحتاج إلى إيقاف دقة عرض رموز الإيموجي التلقائية في Compose لأي سبب آخر، يمكنك استخدام
PlatformTextStyle(emojiSupportMatch):
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
إمكانية التشغيل التفاعلي
إذا كان تطبيقك يستخدم كلاً من Views وCompose في Activity نفسه، تأكَّد من استخدام واجهات برمجة التطبيقات المناسبة لضبط رموز الإيموجي بشكلٍ صحيح. توضّح الأقسام التالية الحالات التي يجب فيها استخدام كل واجهة برمجة تطبيقات.
الامتداد من 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 لاستدعاء الدوال القابلة للإنشاء. يتم عرض رموز الإيموجي بشكلٍ صحيح على جميع إصدارات Android عند استخدام الدوال القابلة للإنشاء Text.
إذا كنت تستخدم AppCompatActivity، يمكنك توسيع TextView من XML
لعرض رموز الإيموجي بشكلٍ صحيح.
ينطبق ذلك إذا كنت توسّع 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 } } } } ) } }
لتضخيم نص باستخدام AndroidView داخل ComposeView، استخدِم
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 } ) } } } ) } }
يمكنك الاطّلاع على مستندات واجهات برمجة التطبيقات لإمكانية التشغيل التفاعلي للحصول على التفاصيل.
تحديد المشاكل وحلّها
إذا كنت ترى توفو (☐) بدلاً من رمز الإيموجي، تحقَّق أولاً مما إذا كانت المشكلة في جهاز الاختبار المحدد. في ما يلي بعض الجوانب الرئيسية التي يمكنك التحقّق منها:
- قد تستخدم جهازًا تم تثبيت صورة نظام عليه مؤخرًا أو محاكيًا جديدًا. إذا أمكن، جرِّب جهاز اختبار حقيقيًا آخر تستخدمه غالبًا وتم تسجيل الدخول إليه باستخدام حسابك على Google. يُرجى العِلم بأنّ مستوى واجهة برمجة التطبيقات يجب أن يكون 30 أو أقل لضمان عمل رموز الإيموجي في الإصدارات الصحيحة.
- لا يتيح هاتف الاختبار استخدام الخطوط القابلة للتنزيل.
- تحقَّق من إصدار خدمات Google Play الصحيح.
مُقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما تكون JavaScript غير مفعّلة
- اعتبارات أخرى
- النص في Compose
- التمرير