Tüm uygulama türleri için emoji kullanımı hızla arttığından standart emoji grubu, Unicode tarafından her yıl yenilenir.
Uygulamanız internet içeriği görüntülüyorsa veya metin girişi sağlıyorsa en yeni emoji yazı tiplerini desteklemenizi önemle tavsiye ederiz. Aksi takdirde, daha sonraki emoji'ler tofu (☐) adı verilen küçük kare bir kutu veya yanlış oluşturulmuş başka emoji dizileri şeklinde gösterilebilir.
Android 11 (API düzeyi 30) ve önceki sürümler emoji yazı tipini güncelleyemez. Bu nedenle, bu sürümlerde bu emojileri gösteren uygulamaların manuel olarak güncellenmesi gerekir.
Aşağıda modern emoji örnekleri verilmiştir.
Örnekler | Sürüm |
---|---|
🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (Eylül 2021) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (Eylül 2020) |
🥲 🥷🏿 🐻❄️ | 13.0 (Mart 2020) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (Ekim 2019) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (Şubat 2019) |
BOM Mart 2023 (Compose UI 1.4), API 21'e kadar eski Android sürümleriyle geriye dönük uyumluluk dahil olmak üzere en yeni emoji sürümünü destekler.
Bu destek için uygulamanızda değişiklik yapılması gerekmez. Text
ve TextField
(Malzeme 2 veya Materyal 3) ya da BasicText
ve BasicTextField
kullanıyorsanız kullanıma hazır modern emoji desteği sunulur.
Uygulamanızdaki en son emojileri test etmenin en iyi yolu, API 30 veya önceki sürümleri çalıştıran gerçek bir cihaz kullanmaktır.
Özel bir emoji çözümü kullanıyorsanız veya farklı bir nedenle Compose'da varsayılan emoji çözünürlüğünü devre dışı bırakmanız gerekiyorsa PlatformTextStyle(emojiSupportMatch)
simgesini kullanabilirsiniz:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
Birlikte çalışabilirlik
Uygulamanız aynı Activity
içinde hem Görünümler hem de Oluştur'u kullanıyorsa emojileri doğru şekilde yapılandırmak için uygun API'leri kullandığınızdan emin olun. Aşağıdaki bölümlerde, her bir API'nin ne zaman kullanılacağı açıklanmaktadır.
ComponentActivity
tarihinden itibaren uzatılıyor
Activity
öğeniz AppCompatActivity
yerine Oluştur ComponentActivity
kodunu kapsıyorsa AppCompat içermeyen emojileri destekle talimatlarını uygulayın.
AppCompatActivity
uzantısını genişletmediğiniz için bağımlılıklarınıza Emoji2 kitaplığını ekleyin ve aşağıdaki snippet'te gösterildiği gibi görünümlerinizde TextView
widget'ı yerine EmojiTextView
kullanın:
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 } } } }
Sonra, XML dosyanızda:
<androidx.emoji2.widget.EmojiTextView android:id="@+id/emoji_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
AppCompatActivity
tarihinden itibaren uzatılıyor
Activity
işleviniz AppCompatActivity
öğesini kullanıyorsa composable işlevleri çağırmak için ComposeView
öğesini kullanabilirsiniz. Metin composable'ları kullandığınızda emojiler
Android sürümlerinde doğru şekilde oluşturulur.
AppCompatActivity
öğesini genişletiyorsanız emojilerin doğru şekilde oluşturulması için XML'den TextView
değerini şişirin.
Bu, XML dosyasını şişiriyorsanız geçerlidir:
ComposeView
dışında,Activity
içinde. Aşağıdaki snippet'teAppCompatActivity
veTextView
kullanımına dikkat edin:
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 } } } }
- aşağıdaki snippet'te olduğu gibi,
AndroidViewBinding
kullanarak bağlamayı görüntüle aracılığıylaComposeView
içinde:
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 } } } } ) } }
ComposeView
içinde AndroidView
ile bir metni şişirmek için AppCompatTextView
kullanarak emojileri düzgün şekilde oluşturun:
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 } ) } } } ) } }
Ayrıntılı bilgi için Birlikte çalışabilirlik API'leri dokümanlarına bakın.
Sorun giderme
Emoji yerine tofu (☐) ifadesini görüyorsanız önce sorunun test cihazınızda olup olmadığını kontrol edin. Kontrol edebileceğiniz birkaç ana şey vardır:
- Kısa süre önce güncellenen bir cihaz veya yeni bir emülatör kullanıyor olabilirsiniz. Mümkünse Google Hesabınızda oturum açmış sık kullandığınız başka bir gerçek test cihazını deneyin. Emojilerin doğru sürümlerde çalışabilmesi için API'nin 30 veya daha az olması gerektiğini unutmayın.
- Test telefonu indirilebilir yazı tiplerini desteklemez.
- Google Play Hizmetleri'nin doğru sürümünü kontrol edin.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Diğer noktalar
- Compose'da metin
- Kaydırma