يتم تحديث المجموعة العادية من الرموز التعبيرية سنويًا من خلال Unicode نظرًا لتزايد استخدام الرموز التعبيرية بسرعة لجميع أنواع التطبيقات.
إذا كان تطبيقك يعرض محتوى على الإنترنت أو يوفر إدخال نص، ننصحك بشدة بتوفير أحدث خطوط الرموز التعبيرية. وإلا، قد يتم عرض الرموز التعبيرية اللاحقة على شكل مربّع مربّع صغير يُسمى 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 من واجهة برمجة التطبيقات أو مستوى أقل.
إذا كنت تستخدم حلاً مخصّصًا للرموز التعبيرية أو كنت بحاجة إلى إيقاف درجة دقة الرموز التعبيرية
التلقائية في Compose لأي سبب آخر، يمكنك استخدام
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
- الانتقال