Emojileri göster

Emoji kullanımı tüm uygulama türlerinde hızla arttığından standart emoji grubu Unicode tarafından yılda bir kez yenilenir.

Uygulamanız internet içeriği gösteriyorsa veya metin girişi sağlıyorsa en son emoji yazı tiplerini desteklemenizi önemle tavsiye ederiz. Aksi takdirde, sonraki emojiler tofu (☐) adı verilen küçük bir kare kutu veya yanlış oluşturulmuş diğer emoji sıralamaları olarak gösterilebilir.

Android 11 (API düzeyi 30) ve önceki sürümler emoji yazı tipini güncelleyemez. Bu nedenle, bu sürümlerde emoji gösteren uygulamalar manuel olarak güncellenmelidir.

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 (Oluşturma kullanıcı arayüzü 1.4), API 21'e kadar eski Android sürümleriyle geriye dönük uyumluluk da dahil olmak üzere en son emoji sürümüne destek sunar.

Bu destek için uygulamanızda herhangi bir değişiklik yapmanız gerekmez. Text ve TextField (Materyal 2 veya Materyal 3) ya da BasicText ve BasicTextField kullanıyorsanız modern emoji desteğini kullanıma hazır olarak alırsınız.

Uygulamanızda en yeni emojileri test etmenin en iyi yolu, API 30 veya altını çalıştıran gerçek bir cihaz kullanmaktır.

Özel bir emoji çözümü kullanıyorsanız veya Oluştur'daki varsayılan emoji çözümünü başka bir nedenle 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üntüle 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 API'nin ne zaman kullanılacağı açıklanmaktadır.

ComponentActivity'ten uzatılıyor

Activity, AppCompatActivity yerine Oluştur'dan ComponentActivity uzanıyorsa AppCompat olmadan emoji desteği talimatlarını uygulayın.

AppCompatActivity kitaplığını genişletmediğiniz için Emoji2 kitaplığını bağımlılıklarınıza 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
            }
        }
    }
}

Ardından, XML dosyanızda:

<androidx.emoji2.widget.EmojiTextView
    android:id="@+id/emoji_text_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

AppCompatActivity'ten uzatılıyor

Activity, AppCompatActivity'ten uzanıyorsa birleştirilebilir işlevleri çağırmak için ComposeView kullanabilirsiniz. Metin bileşenlerini kullandığınızda emojiler Android sürümlerinde doğru şekilde oluşturulur.

AppCompatActivity'ten genişletiyorsanız emojilerin doğru şekilde oluşturulması için XML'den TextView öğesini şişirin.

Bu, XML'i şişiriyorsanız geçerlidir:

  • ComposeView dışındaki Activity. Aşağıdaki snippet'te AppCompatActivity ve TextView kullanımı dikkatinizi çekecektir:

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 bulunan bir metni genişletmek için emojileri doğru şekilde oluşturmak üzere AppCompatTextView kullanın:

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ılar için İşlevsel Uyumluluk API'leri dokümanlarına bakın.

Sorun giderme

Emoji yerine tofu (☐) görüyorsanız önce sorunun test cihazınızdan kaynaklanıp kaynaklanmadığını kontrol edin. Kontrol edebileceğiniz birkaç temel nokta vardır: