इमोजी दिखाएं

इमोजी के स्टैंडर्ड सेट को सालाना रीफ़्रेश किया जाता है यूनिकोड, क्योंकि इमोजी का इस्तेमाल बढ़ रहा है तेज़ी से काम करता है.

अगर आपका ऐप्लिकेशन इंटरनेट कॉन्टेंट दिखाता है या टेक्स्ट इनपुट की सुविधा देता है, तो हमारा सुझाव है कि आप नए इमोजी फ़ॉन्ट का इस्तेमाल करें. ऐसा न करने पर, हो सकता है कि बाद में इमोजी किसी छोटे स्क्वेयर बॉक्स के तौर पर दिखाया जाना, जिसे टोफ़ू (☐) या गलत तरीके से रेंडर किया गया है इमोजी का क्रम तय करें.

Android 11 (एपीआई लेवल 30) और इससे पहले के वर्शन के लिए, इमोजी का फ़ॉन्ट अपडेट नहीं किया जा सकता. इसलिए उन वर्शन पर दिखाने वाले ऐप्लिकेशन को मैन्युअल तरीके से अपडेट करना चाहिए.

आधुनिक इमोजी के उदाहरण यहां दिए गए हैं.

उदाहरण वर्शन
🫠 🫱🏼‍🫲🏿 🫰🏽 14.0 (सितंबर 2021)
😶‍🌫️ 🧔🏻‍♀️ 🧑🏿‍❤️‍🧑🏾 13.1 (सितंबर 2020)
🥲 🥷🏿 🐻‍❄️ 13.0 (मार्च 2020)
🧑🏻‍🦰 🧑🏿‍🦯 👩🏻‍🤝‍👩🏼 12.1 (अक्टूबर 2019)
🦩 🦻🏿 👩🏼‍🤝‍👩🏻 12.0 (फ़रवरी 2019)

BOM मार्च 2023 (Compose का यूज़र इंटरफ़ेस 1.4) में नए इमोजी का इस्तेमाल किया जा सकता है वर्शन, जिसमें Android के पुराने वर्शन के साथ काम करने की सुविधा शामिल है को एपीआई 21 में अपग्रेड करने की ज़रूरत नहीं है.

इस सहायता के लिए आपको अपने ऐप्लिकेशन में कोई बदलाव नहीं करना होगा—अगर आप Text और TextField (सामग्री 2 या 3 सामग्री) या BasicText और BasicTextField, आपको नई तरह से इमोजी के लिए सहायता मिलती है.

अपने ऐप्लिकेशन में नए इमोजी की जांच करने का सबसे अच्छा तरीका, एपीआई लेवल 30 या इससे पहले के वर्शन वाला असली डिवाइस.

अगर पसंद के मुताबिक बनाया गया इमोजी इस्तेमाल किया जा रहा है या डिफ़ॉल्ट इमोजी को बंद करना है, तो कंपोज़ में रिज़ॉल्यूशन है, तो PlatformTextStyle(emojiSupportMatch):

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

इंटरोऑपरेटिविटी

अगर आपका ऐप्लिकेशन एक ही Activity में व्यू और कंपोज़, दोनों का इस्तेमाल करता है, तो पक्का करें कि इमोजी को सही तरीके से कॉन्फ़िगर करने के लिए, सही एपीआई का इस्तेमाल कर रहे हैं. नीचे दिए गए सेक्शन में बताया गया है कि एपीआई का इस्तेमाल कब करना चाहिए.

ComponentActivity से बढ़ाया जा रहा है

अगर आपका Activity 'लिखें' ComponentActivity से शुरू होता है, तो AppCompatActivity, AppCompat के बिना सहायता वाले इमोजी को फ़ॉलो करें निर्देश.

आप AppCompatActivity को आगे नहीं बढ़ा रहे हैं, इसलिए इमोजी2 जोड़ें लाइब्रेरी में जोड़ा जा सकता है और अपने व्यू में EmojiTextView का इस्तेमाल किया जा सकता है के बजाय, TextView विजेट का इस्तेमाल करें, जैसा कि नीचे दिए गए स्निपेट में दिखाया गया है:

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
            }
        }
    }
}

इसके बाद, अपनी एक्सएमएल फ़ाइल में:

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

AppCompatActivity से बढ़ाया जा रहा है

अगर आपके Activity की अवधि AppCompatActivity है, तो इसका इस्तेमाल किया जा सकता है ComposeView कंपोज़ेबल फ़ंक्शन को कॉल करने के लिए. टेक्स्ट कॉम्पोज़ेबल का इस्तेमाल करने पर, इमोजी सभी Android वर्शन में सही तरीके से रेंडर होते हैं.

अगर अवधि को AppCompatActivity से बढ़ाया जा रहा है, तो एक्सएमएल से TextView को बढ़ाएं ताकि इमोजी सही तरह से रेंडर हो सकें.

एक्सएमएल को बढ़ाने पर यह लागू होता है:

  • ComposeView से बाहर, Activity में. ध्यान दें कि AppCompatActivity और 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 में AndroidView का इस्तेमाल करके टेक्स्ट को बड़ा करने के लिए, इमोजी को सही तरीके से रेंडर करने के लिए 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 }
                        )
                    }
                }
            }
        )
    }
}

ज़्यादा जानकारी के लिए, Interoperability API से जुड़ा दस्तावेज़ देखें.

समस्या का हल

अगर आपको इमोजी के बजाय टोफ़ू (☐) दिख रहा है, तो सबसे पहले देखें कि क्या समस्या आपके टेस्ट डिवाइस पर. यहां कुछ मुख्य बातें बताई गई हैं जिनकी जांच की जा सकती है:

{% endverba नया %} {% verbatim %}