مجموعه استاندارد ایموجیها سالانه توسط یونیکد بهروزرسانی میشود، زیرا استفاده از شکلکها برای همه انواع برنامهها به سرعت در حال افزایش است.
اگر برنامه شما محتوای اینترنتی را نمایش میدهد یا ورودی متن ارائه میدهد، ما قویاً توصیه میکنیم از جدیدترین فونتهای ایموجی پشتیبانی کنید. در غیر این صورت، شکلکهای بعدی ممکن است بهعنوان یک جعبه مربع کوچک به نام توفو (☐) یا سایر دنبالههای شکلکهایی که به اشتباه رندر شدهاند نمایش داده شود.
نسخههای اندروید 11 (سطح API 30) و پایینتر نمیتوانند فونت ایموجی را بهروزرسانی کنند، بنابراین برنامههایی که آنها را در آن نسخهها نمایش میدهند باید بهصورت دستی بهروزرسانی شوند.
موارد زیر نمونه هایی از ایموجی های مدرن هستند.
نمونه ها | نسخه |
---|---|
🫠 🏼🫲🏿 🫰🏽 | 14.0 (سپتامبر 2021) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (سپتامبر 2020) |
🥲 🥷🏿 🐻❄️ | 13.0 (مارس 2020) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (اکتبر 2019) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (فوریه 2019) |
BOM March 2023 ( Compose UI 1.4 ) از آخرین نسخه ایموجی پشتیبانی میکند، از جمله سازگاری با نسخههای قدیمیتر اندروید تا API 21.
این پشتیبانی نیازی به تغییر در برنامه شما ندارد - اگر Text
and TextField
(Material 2 یا Material 3) یا BasicText
و BasicTextField
استفاده میکنید، از شکلکهای مدرن پشتیبانی میکنید.
بهترین راه برای آزمایش جدیدترین ایموجیها در برنامهتان، استفاده از یک دستگاه واقعی در API 30 یا پایینتر است.
اگر از یک راه حل سفارشی ایموجی استفاده می کنید، یا به هر دلیل دیگری نیاز به غیرفعال کردن وضوح شکلک پیش فرض در Compose دارید، می توانید از PlatformTextStyle(emojiSupportMatch)
استفاده کنید:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
قابلیت همکاری
اگر برنامه شما از هر دو View و Compose در یک Activity
استفاده میکند، مطمئن شوید که از APIهای مناسب برای پیکربندی صحیح شکلکها استفاده میکنید. بخشهای زیر زمان استفاده از هر API را توضیح میدهند.
گسترش از ComponentActivity
اگر Activity
شما از Compose 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
برای فراخوانی توابع قابل ترکیب استفاده کنید. هنگامی که از Text composables استفاده می کنید، شکلک ها در نسخه های 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
، از طریق view binding با استفاده از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 } ) } } } ) } }
برای جزئیات به مستندات APIهای تعاملی مراجعه کنید.
عیب یابی
اگر به جای شکلک توفو (☐) میبینید، ابتدا بررسی کنید که آیا مشکل دستگاه آزمایشی خاص شما است یا خیر. چند چیز اصلی وجود دارد که می توانید بررسی کنید:
- ممکن است از دستگاهی که اخیراً فلش شده یا شبیه ساز جدیدی استفاده می کنید. در صورت امکان، دستگاه تست واقعی دیگری را که اغلب استفاده می کنید و به حساب Google شما وارد شده است، امتحان کنید. به یاد داشته باشید که API باید 30 یا کمتر باشد تا مطمئن شوید که ایموجی ها در نسخه های صحیح کار می کنند.
- تلفن آزمایشی از فونت های قابل دانلود پشتیبانی نمی کند .
- نسخه صحیح خدمات Google Play را بررسی کنید.
برای شما توصیه می شود
- توجه: متن پیوند زمانی که جاوا اسکریپت خاموش است نمایش داده می شود
- ملاحظات دیگر
- متن در نوشتن
- اسکرول کنید