Emojileri göster

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'te AppCompatActivity ve TextView 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
            }
        }
    }
}

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: