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