مجموعه استاندارد اموجیها هر سال توسط Unicode بهروزرسانی میشود، زیرا استفاده از اموجیها برای همه انواع برنامهها بهسرعت درحال افزایش است.
اگر برنامه شما محتوای اینترنتی نمایش میدهد یا ورودی نوشتاری ارائه میدهد، بهشدت توصیه میکنیم از جدیدترین قلمهای اموجی پشتیبانی کنید. درغیراینصورت، اموجیهای جدیدتر ممکن است بهصورت یک چارگوش کوچک به نام توفو (☐) یا دیگر توالیهای اموجی نادرست نمایش داده شوند.
نسخههای Android 11 (سطح API 30) و پایینتر نمیتوانند قلم اموجی را بهروز کنند، بنابراین برنامههایی که اموجیها را در این نسخهها نمایش میدهند باید بهصورت دستی بهروز شوند.
در زیر نمونههایی از اموجیهای مدرن آورده شده است.
| مثالها | نسخه |
|---|---|
| 🇨🇶 | ۱۶.۰ (سپتامبر ۲۰۲۴) |
| 🐦🔥 🧑🧑🧒🧒 👩🏽🦽➡️ 🇲🇶 | ۱۵.۱ (سپتامبر ۲۰۲۳) |
| 🩷 🫸🏼 🐦⬛ | ۱۵.۰ (سپتامبر ۲۰۲۲) |
| 🫠 🫱🏼🫲🏿 🫰🏽 | ۱۴.۰ (سپتامبر ۲۰۲۱) |
| 😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | ۱۳.۱ (سپتامبر ۲۰۲۰) |
| 🥲 🥷🏿 🐻❄️ | ۱۳.۰ (مارس ۲۰۲۰) |
| 🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | ۱۲.۱ (اکتبر ۲۰۱۹) |
| 🦩 🦻🏿 👩🏼🤝👩🏻 | ۱۲.۰ (فوریه ۲۰۱۹) |
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 از هر دو «نماها» و «ترکیب» استفاده میکند، مطمئن شوید که از میاناهای برنامهسازی کاربردی مناسب برای پیکربندی درست اموجیها استفاده میکنید. بخشهای زیر
توضیح میدهند که چه زمانی از هر API استفاده کنید.
درحال گسترش از ComponentActivity
اگر Activity از «نوشتن» ComponentActivity بهجای
AppCompatActivity گسترش مییابد، دستورالعملهای پشتیبانی از اموجی بدون AppCompat
را دنبال کنید.
چون از AppCompatActivity استفاده نمیکنید، کتابخانه Emoji2 را به وابستگیهایتان اضافه کنید و بهجای ابزاره TextView، از EmojiTextView در نماهایتان استفاده کنید، همانطور که در گزیده زیر نشان داده شده است:
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 } ) } } } ) } }
برای جزئیات بیشتر، مستندات میاناهای برنامهسازی کاربردی قابلیت همکاری را ببینید.
عیبیابی
اگر بهجای اموجی توفو (☐) میبینید، ابتدا بررسی کنید که مشکل از دستگاه آزمایشی خاص شما است یا نه. چند مورد اصلی وجود دارد که میتوانید بررسی کنید:
- ممکن است از دستگاهی که اخیراً رام آن عوض شده است یا شبیهساز جدیدی استفاده میکنید. درصورت امکان، از دستگاه آزمایشی واقعی دیگری که اغلب استفاده میکنید و با آن به سیستم «حساب Google» خود وارد میشوید استفاده کنید. بهخاطر داشته باشید که API باید ۳۰ یا کمتر باشد تا اموجیها در نسخههای صحیح کار کنند.
- تلفن آزمایشی از قلمهای قابلبارگیری پشتیبانی نمیکند.
- نسخه صحیح «خدمات Google Play» را بررسی کنید.
توصیهشده برای شما
- توجه: نوشتار پیوند وقتی جاوا اسکریپت خاموش است نمایش داده میشود
- ملاحظات دیگر
- نوشتار در «نوشتن»
- پیمایش