Emojileri göster

Standart emoji grubu her yıl yenilenen Emoji kullanımı arttıkça Unicode hızlı bir şekilde değiştirildi.

Uygulamanız internet içeriği görüntülüyorsa veya metin girişi sağlıyorsa en son emoji yazı tiplerinin desteklenmesini öneriyoruz. Aksi takdirde daha sonraki emojiler tofu (☐) adında küçük bir kare kutu veya yanlış oluşturulmuş başka bir metin emin olmanız gerekir.

Android 11 (API düzeyi 30) ve önceki sürümler emoji yazı tipini güncelleyemediğinden bunları 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 UI 1.4) en son emojileri destekler. sürümü (eski Android sürümleriyle geriye dönük uyumluluk dahil) API 21'e geri yükleyebilirsiniz.

Bu destek için uygulamanızda herhangi bir değişiklik yapılması gerekmez (Text kullanıyorsanız ve TextField (Malzeme 2 veya Materyal 3) veya BasicText ve BasicTextField, kullanıma hazır modern emoji desteğinden yararlanın.

Uygulamanızdaki en son emojileri test etmenin en iyi yolu API 30 veya önceki sürümlerdeki gerçek bir cihaz.

Özel bir emoji çözümü kullanıyorsanız veya varsayılan emojiyi devre dışı bırakmanız gerekiyorsa herhangi bir nedenle saklamanız durumunda, PlatformTextStyle(emojiSupportMatch):

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şturma özelliklerini kullanıyorsa doğru API'leri kullandığından emin olun. Aşağıdakiler bölümlerinde her bir API'nin ne zaman kullanılacağı açıklanmaktadır.

ComponentActivity tarihinden itibaren uzatılıyor

Activity öğeniz Oluştur yerine ComponentActivity öğesini içeriyorsa AppCompatActivity, AppCompat içermeyen emojileri destekle adımlarını uygulayın bakın.

AppCompatActivity uzantısını genişletmediğiniz için Emoji2'yi ekleyin kitaplığına ekleme ve görünümlerinizde EmojiTextView kullanma TextView widget'ı yerine aşağıdaki snippet'te gösterildiği gibi:

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 metriğiniz AppCompatActivity kapsamının dışındaysa şunu kullanabilirsiniz: Oluşturulabilir işlevleri çağırmak için ComposeView. Emojiler aşağıdaki platformlarda doğru şekilde oluşturulur: Metin composable'ları kullandığınız Android sürümleri.

AppCompatActivity değerinden genişletiyorsanız XML'den TextView değerini uzatın sağlandığından emin olun.

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

  • ComposeView dışında, Activity içinde. Google Analytics 4'te Aşağıdaki snippet'te AppCompatActivity ve 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
            }
        }
    }
}

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 şunu kullanın: Emojileri düzgün oluşturmak için 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 }
                        )
                    }
                }
            }
        )
    }
}

Ayrıntılı bilgi için Birlikte çalışabilirlik API'leri dokümanlarına bakın.

Sorun giderme

Emoji yerine tofu (☐) görüyorsanız önce sorunun gerçek olup olmadığını kontrol edin. cihazınıza özel testtir. Kontrol edebileceğiniz birkaç ana şey vardır:

ziyaret edin. ziyaret edin.