टेक्स्ट फ़ील्ड में स्टाइलस का इनपुट

Compose को आज़माएं
Android के लिए, Jetpack Compose को यूज़र इंटरफ़ेस (यूआई) टूलकिट के तौर पर इस्तेमाल करने का सुझाव दिया जाता है. Compose में स्टाइलस का इस्तेमाल करने का तरीका जानें.

Android 14 (एपीआई लेवल 34) और इसके बाद के वर्शन में, उपयोगकर्ता किसी भी ऐप्लिकेशन के किसी भी टेक्स्ट इनपुट फ़ील्ड में स्टाइलस का इस्तेमाल करके लिख सकते हैं. Android के टेक्स्ट एंट्री फ़ील्ड में, स्टाइलस से इनपुट करने की सुविधा डिफ़ॉल्ट रूप से उपलब्ध होती है. इनमें EditText कॉम्पोनेंट और WebView टेक्स्ट विजेट शामिल हैं.

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

पहली इमेज. स्टाइलस से लिखा गया इनपुट.

EditText

Android 14 और इसके बाद के वर्शन पर, सभी EditText फ़ील्ड के लिए स्टाइलस हैंडराइटिंग की सुविधा डिफ़ॉल्ट रूप से चालू रहती है. EditText के लिए हैंडराइटिंग मोड तब शुरू होता है, जब व्यू के हैंडराइटिंग बाउंड्री के अंदर स्टाइलस के मोशन इवेंट का पता चलता है.

हैंडराइटिंग के बाउंड्री बॉक्स में, व्यू के चारों ओर 40 डीपी का वर्टिकल पैडिंग और 10 डीपी का हॉरिज़ॉन्टल पैडिंग शामिल होता है. setHandwritingBoundsOffsets() की मदद से, लिखावट की सीमाएं अडजस्ट करें. setAutoHandwritingEnabled(false) की मदद से, हैंडराइटिंग की सुविधा बंद करें.

इनपुट फ़ील्ड के चारों ओर मौजूद आयत, स्टाइलस के मोशन इवेंट का पता लगाने की सीमाओं को दिखाता है.
दूसरी इमेज. EditText फ़ील्ड के हैंडराइटिंग बाउंड.

इनपुट डेलिगेशन

ऐप्लिकेशन, प्लेसहोल्डर यूज़र इंटरफ़ेस (यूआई) एलिमेंट दिखा सकते हैं. ये टेक्स्ट इनपुट फ़ील्ड की तरह दिखते हैं, लेकिन ये सिर्फ़ स्टैटिक यूज़र इंटरफ़ेस (यूआई) एलिमेंट होते हैं. इनमें टेक्स्ट डालने की सुविधा नहीं होती. खोज फ़ील्ड इसका एक सामान्य उदाहरण है. स्टैटिक यूज़र इंटरफ़ेस (यूआई) एलिमेंट पर टैप करने से, एक नए यूज़र इंटरफ़ेस (यूआई) पर ट्रांज़िशन ट्रिगर होता है. इसमें एक फ़ंक्शनल टेक्स्ट इनपुट फ़ील्ड होता है, जिस पर इनपुट के लिए फ़ोकस किया जाता है.

तीसरी इमेज. स्टैटिक यूज़र इंटरफ़ेस (यूआई) एलिमेंट से टेक्स्ट इनपुट फ़ील्ड में इनपुट डेलिगेशन.

स्टाइलस इनपुट डेलिगेशन

स्टाइलस से लिखे गए टेक्स्ट को इनपुट फ़ील्ड में डालने की सुविधा देने के लिए, हैंडराइटिंग डेलिगेशन एपीआई का इस्तेमाल करें. इसके लिए, प्लेसहोल्डर इनपुट फ़ील्ड का इस्तेमाल करें. इसके बारे में जानने के लिए, setHandwritingDelegatorCallback() और setIsHandwritingDelegate() देखें. प्लेसहोल्डर यूज़र इंटरफ़ेस (यूआई) एलिमेंट को, हैंडराइटिंग को फ़ंक्शनल इनपुट फ़ील्ड में डेलिगेट करने के लिए कॉन्फ़िगर किया जाता है. उदाहरण के लिए:

Kotlin

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback {
        showAndFocusDelegateInputField()
    }
    delegateInputField.setIsHandwritingDelegate(true)
}

Java

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback(this::showAndFocusInputFieldDelegate);
    delegateInputField.setIsHandwritingDelegate(true);
}

प्लेसहोल्डर टेक्स्ट इनपुट फ़ील्ड व्यू पर स्टाइलस घुमाने से, कॉलबैक शुरू हो जाता है. कॉलबैक, यूज़र इंटरफ़ेस (यूआई) को ट्रांज़िशन करता है, ताकि फ़ंक्शनल इनपुट फ़ील्ड को दिखाया जा सके और उस पर फ़ोकस किया जा सके. कॉलबैक को लागू करने का तरीका आम तौर पर, प्लेसहोल्डर एलिमेंट पर क्लिक लिसनर को लागू करने के तरीके जैसा ही होता है. जब फ़ंक्शनल इनपुट फ़ील्ड, InputConnection बनाता है, तब स्टाइलस से लिखने का मोड शुरू होता है.

चौथी इमेज. स्टैटिक यूज़र इंटरफ़ेस (यूआई) एलिमेंट से टेक्स्ट इनपुट फ़ील्ड में स्टाइलस इनपुट डेलिगेशन.

मटीरियल डिज़ाइन

com.google.android.material.search लाइब्रेरी, प्लेसहोल्डर यूज़र इंटरफ़ेस (यूआई) पैटर्न को लागू करने के लिए SearchBar और SearchView क्लास उपलब्ध कराती है.

प्लेसहोल्डर और फ़ंक्शनल सर्च व्यू, setUpWithSearchBar() से लिंक होते हैं.

हैंडराइटिंग डेलिगेशन की सुविधा, Material लाइब्रेरी में कॉन्फ़िगर की जाती है. इसके लिए, आपके ऐप्लिकेशन में कोई अतिरिक्त डेवलपमेंट करने की ज़रूरत नहीं होती.

ड्रॉइंग की जगहों के साथ ओवरलैप होना

अगर आपके ऐप्लिकेशन में ड्राइंग की सुविधा है और उस पर टेक्स्ट फ़ील्ड ओवरले किया गया है, तो आपको स्टाइलस से लिखने की सुविधा बंद करनी पड़ सकती है, ताकि उपयोगकर्ता ड्राइंग कर सके. setAutoHandwritingEnabled() देखें.

टेस्ट करना

स्टाइलस से लिखने की सुविधा, Android 14 और इसके बाद के वर्शन वाले डिवाइसों पर काम करती है. इसके लिए, स्टाइलस इनपुट डिवाइस और इनपुट मेथड एडिटर (आईएमई) का इस्तेमाल किया जाता है. साथ ही, यह ज़रूरी है कि आईएमई, Android 14 के स्टाइलस से लिखने की सुविधा वाले एपीआई के साथ काम करता हो.

अगर आपके पास स्टाइलस इनपुट डिवाइस नहीं है, तो रूट ऐक्सेस वाले किसी भी डिवाइस (इसमें एम्युलेटर भी शामिल हैं) पर स्टाइलस इनपुट को सिम्युलेट करें. इसके लिए, Android डीबग ब्रिज (adb) की इन कमांड का इस्तेमाल करें:


// Android 14
adb shell setprop persist.debug.input.simulate_stylus_with_touch true && adb shell stop && adb shell start

// Android 15 and higher
// Property takes effect after screen reconfiguration such as orientation change.
adb shell setprop debug.input.simulate_stylus_with_touch true

अगर आपके पास ऐसा डिवाइस है जिस पर स्टाइलस काम नहीं करता है, तो टेस्टिंग के लिए Gboard के बीटा वर्शन का इस्तेमाल करें.

अन्य संसाधन