Emojileri göster

Emoji kullanımı her uygulama türünde hızla arttığı için standart emoji grubu Unicode tarafından her yıl yenilenir.

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

Android 11 (API düzeyi 30) ve önceki sürümler, emoji yazı tipini güncelleyemediğinden emojileri bu sürümlerde 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 (Compose kullanıcı arayüzü 1.4), API 21'e kadarki 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 (Materyal 2 veya Materyal 3) ya da BasicText ve BasicTextField kullanıyorsanız, anında modern emoji desteğinden yararlanırsınız.

Uygulamanızdaki en yeni 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 başka bir nedenle Oluştur'da varsayılan emoji çözünürlüğünü devre dışı bırakmanız gerekiyorsa PlatformTextStyle(emojiSupportMatch) aracını kullanabilirsiniz:

Text(
    text = "Hello $EMOJI_TEXT",
    style = TextStyle(
        platformStyle = PlatformTextStyle(
            emojiSupportMatch = EmojiSupportMatch.None
        )/* ... */
    )
)

Birlikte çalışabilirlik

Uygulamanız hem Görünümler'i hem de Oluştur'u aynı Activity içinde 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 değerinden uzatılıyor

Activity öğeniz AppCompatActivity yerine Oluştur'dan ComponentActivity alabiliyorsa AppCompat olmadan destek emojisi talimatlarını uygulayın.

AppCompatActivity uygulamasını genişletmediğiniz için bağımlılıklarınıza Emoji2 kitaplığını ekleyin ve görünümlerinizde aşağıdaki snippet'te gösterildiği gibi 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 değerinden uzatılıyor

Activity öğeniz AppCompatActivity tarihinden itibaren uzanıyorsa composable işlevleri çağırmak için ComposeView kullanabilirsiniz. Text composable'ları kullandığınızda emojiler Android sürümlerinde doğru şekilde oluşturulur.

AppCompatActivity değerinden genişliyorsanız emojilerin doğru şekilde oluşturulması için XML'den TextView değerini artırın.

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

  • ComposeView dışında, Activity içinde. Aşağıdaki snippet'te AppCompatActivity ve TextView kullanıldığı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 doğru ş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 (☐) simgesini görüyorsanız öncelikle sorunun kullandığınız test cihazından olup olmadığını kontrol edin. Kontrol edebileceğiniz birkaç temel nokta vardır: