इमोजी के स्टैंडर्ड सेट को यूनिकोड हर साल रीफ़्रेश करता है, क्योंकि सभी तरह के ऐप्लिकेशन में इमोजी का इस्तेमाल तेज़ी से बढ़ रहा है.
अगर आपका ऐप्लिकेशन इंटरनेट कॉन्टेंट दिखाता है या टेक्स्ट इनपुट की सुविधा देता है, तो हमारा सुझाव है कि आप नए इमोजी फ़ॉन्ट का इस्तेमाल करें. ऐसा न करने पर, बाद में डाले गए इमोजी, टोफ़ू (☐) नाम के छोटे स्क्वेयर बॉक्स के तौर पर दिख सकते हैं. इसके अलावा, गलत तरीके से रेंडर किए गए अन्य इमोजी के क्रम भी दिख सकते हैं.
Android 11 (एपीआई लेवल 30) और उससे पहले के वर्शन में, इमोजी फ़ॉन्ट को अपडेट नहीं किया जा सकता. इसलिए, उन वर्शन पर इमोजी दिखाने वाले ऐप्लिकेशन को मैन्युअल तरीके से अपडेट करना होगा.
यहां आधुनिक इमोजी के उदाहरण दिए गए हैं.
उदाहरण | वर्शन |
---|---|
🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (सितंबर 2021) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (सितंबर 2020) |
🥲 🥷🏿 🐻❄️ | 13.0 (मार्च 2020) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (अक्टूबर 2019) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (फ़रवरी 2019) |
BOM मार्च 2023 (Compose UI 1.4) में, इमोजी के नए वर्शन के साथ काम करने की सुविधा उपलब्ध है. इसमें, एपीआई 21 तक के पुराने Android वर्शन के साथ काम करने की सुविधा भी शामिल है.
इस सुविधा के लिए, आपको अपने ऐप्लिकेशन में कोई बदलाव करने की ज़रूरत नहीं है— Text
और
TextField
(Material 2 या Material 3) या BasicText
और
BasicTextField
का इस्तेमाल करने पर, आपको नए इमोजी की सुविधा बिना किसी बदलाव के मिल जाती है.
अपने ऐप्लिकेशन में नए इमोजी की जांच करने का सबसे अच्छा तरीका यह है कि आप एपीआई 30 या इससे पहले के वर्शन वाले किसी डिवाइस का इस्तेमाल करें.
अगर पसंद के मुताबिक इमोजी का इस्तेमाल किया जा रहा है या किसी और वजह से, लिखने के दौरान इमोजी के डिफ़ॉल्ट विकल्प को बंद करना है, तो PlatformTextStyle(emojiSupportMatch)
का इस्तेमाल करें:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना)
अगर आपका ऐप्लिकेशन एक ही Activity
में व्यू और कॉम्पोज़, दोनों का इस्तेमाल करता है, तो पक्का करें कि आपने इमोजी को सही तरीके से कॉन्फ़िगर करने के लिए, सही एपीआई का इस्तेमाल किया हो. नीचे दिए गए सेक्शन में बताया गया है कि हर एपीआई का इस्तेमाल कब करना चाहिए.
ComponentActivity
से बढ़ाकर
अगर आपका Activity
, AppCompatActivity
के बजाय लिखें ComponentActivity
से दिखता है, तो AppCompat के बिना इमोजी की सुविधा इस्तेमाल करने के लिए दिए गए निर्देशों का पालन करें.
AppCompatActivity
को एक्सटेंड़ नहीं किया जा रहा है. इसलिए, अपनी डिपेंडेंसी में Emoji2 लाइब्रेरी जोड़ें. साथ ही, अपने व्यू में TextView
विजेट के बजाय EmojiTextView
का इस्तेमाल करें, जैसा कि यहां दिए गए स्निपेट में दिखाया गया है:
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 } } } }
ComposeView
में,AndroidViewBinding
का इस्तेमाल करके व्यू बाइंडिंग के ज़रिए, जैसे कि इस स्निपेट में:
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 } ) } } } ) } }
ज़्यादा जानकारी के लिए, इंटरऑपरेबिलिटी एपीआई का दस्तावेज़ देखें.
समस्या का हल
अगर आपको इमोजी के बजाय tofu (☐) दिख रहा है, तो पहले देखें कि समस्या आपके टेस्ट डिवाइस में है या नहीं. यहां कुछ मुख्य बातों की जांच की जा सकती है:
- ऐसा हो सकता है कि आपने हाल ही में फ़्लैश किया गया डिवाइस या नया एमुलेटर इस्तेमाल किया हो. अगर हो सके, तो किसी ऐसे डिवाइस से फिर से कोशिश करें जिसे अक्सर इस्तेमाल किया जाता हो और जिसमें आपने अपने Google खाते से साइन इन किया हो. याद रखें कि एपीआई 30 या उससे कम होना चाहिए, ताकि यह पक्का किया जा सके कि इमोजी सही वर्शन में काम करें.
- जांच के लिए इस्तेमाल किए जा रहे फ़ोन में, डाउनलोड किए जा सकने वाले फ़ॉन्ट काम नहीं करते.
- Google Play services का सही वर्शन देखें.
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक टेक्स्ट दिखता है
- ध्यान देने वाली अन्य बातें
- लिखने की सुविधा में टेक्स्ट
- Scroll