कीबोर्ड नेविगेशन का इस्तेमाल करें

Android डिवाइस पर, ऑन-स्क्रीन कीबोर्ड जैसे सॉफ़्ट इनपुट के तरीकों के साथ-साथ, डिवाइस से कनेक्ट किए गए फ़िज़िकल कीबोर्ड का भी इस्तेमाल किया जा सकता है. कीबोर्ड की मदद से, टेक्स्ट डालना आसान हो जाता है. साथ ही, उपयोगकर्ता आपके ऐप्लिकेशन पर नेविगेट कर सकते हैं और उससे इंटरैक्ट कर सकते हैं. फ़ोन जैसे ज़्यादातर हाथ में पकड़े जाने वाले डिवाइसों पर, इंटरैक्शन के मुख्य मोड के तौर पर टच का इस्तेमाल किया जाता है. हालांकि, टैबलेट और मिलते-जुलते डिवाइसों का इस्तेमाल ज़्यादा किया जाता है. साथ ही, कई उपयोगकर्ता इन डिवाइसों पर कीबोर्ड की ऐक्सेसरी जोड़ना पसंद करते हैं.

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

अपने ऐप्लिकेशन का परीक्षण करें

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

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

अपने ऐप्लिकेशन की जांच करने के लिए, यह तरीका अपनाएं:

  1. अपने ऐप्लिकेशन को किसी ऐसे डिवाइस पर इंस्टॉल करें जिसमें हार्डवेयर कीबोर्ड हो.

    अगर आपके पास कीबोर्ड वाला कोई हार्डवेयर डिवाइस नहीं है, तो ब्लूटूथ कीबोर्ड या यूएसबी कीबोर्ड कनेक्ट करें.

    Android एमुलेटर का इस्तेमाल भी किया जा सकता है:

    1. AVD Manager में, नया डिवाइस पर क्लिक करें या कोई मौजूदा प्रोफ़ाइल चुनें और क्लोन करें पर क्लिक करें.
    2. इसके बाद, दिखने वाली विंडो में पक्का करें कि कीबोर्ड और DPad चालू हों.
  2. अपने ऐप्लिकेशन की जांच करने के लिए, यूज़र इंटरफ़ेस (यूआई) में नेविगेट करने के लिए सिर्फ़ Tab बटन का इस्तेमाल करें. पक्का करें कि हर यूज़र इंटरफ़ेस (यूआई) कंट्रोल पर उम्मीद के मुताबिक फ़ोकस हो.

    ऐसे सभी उदाहरण देखें जिनमें फ़ोकस अचानक किसी और जगह पर चला गया हो.

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

    ऐसे सभी उदाहरण देखें जिनमें फ़ोकस अचानक किसी और जगह पर चला जाता है.

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

टैब नेविगेशन को हैंडल करना

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

उदाहरण के लिए, नीचे दिए गए लेआउट में, दो बटन दाईं ओर अलाइन किए गए हैं और दूसरा बटन बाईं ओर अलाइन किया गया है. पहले बटन से टेक्स्ट फ़ील्ड पर और फिर दूसरे बटन पर फ़ोकस करने के लिए, लेआउट में android:nextFocusForward एट्रिब्यूट की मदद से, फ़ोकस किए जा सकने वाले हर एलिमेंट के लिए फ़ोकस का क्रम साफ़ तौर पर तय करना होगा.

<androidx.constraintlayout.widget.ConstraintLayout ...>
    <Button
        android:id="@+id/button1"
        android:nextFocusForward="@+id/editText1"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        ... />
    <Button
        android:id="@+id/button2"
        android:nextFocusForward="@+id/button1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/button1"
        ... />
    <EditText
        android:id="@id/editText1"
        android:nextFocusForward="@+id/button2"
        app:layout_constraintBottom_toBottomOf="@+id/button2"
        app:layout_constraintRight_toLeftOf="@id/button2
        ...  />
    ...
</androidx.constraintlayout.widget.ConstraintLayout>

अब फ़ोकस, button1 से button2 और फिर editText1 पर जाने के बजाय, स्क्रीन पर दिखने के हिसाब से सही तरीके से चलता है: button1 से editText1 और फिर button2 पर.

निर्देशों के हिसाब से नेविगेट करना

उपयोगकर्ता, कीबोर्ड पर ऐरो बटन का इस्तेमाल करके भी आपके ऐप्लिकेशन को नेविगेट कर सकते हैं. यह ठीक वैसा ही काम करता है जैसे डी-पैड या ट्रैकबॉल का इस्तेमाल करके नेविगेट करना. स्क्रीन पर मौजूद व्यू के लेआउट के आधार पर, सिस्टम यह "अनुमान" लगाता है कि किसी दिशा में फ़ोकस किस व्यू पर करना है. हालांकि, कभी-कभी सिस्टम का अनुमान गलत हो सकता है.

अगर किसी दिशा में नेविगेट करते समय, सिस्टम सही व्यू पर फ़ोकस नहीं करता है, तो इन एट्रिब्यूट की मदद से तय करें कि किस व्यू पर फ़ोकस होना चाहिए:

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

<Button
    android:id="@+id/button1"
    android:nextFocusRight="@+id/button2"
    android:nextFocusDown="@+id/editText1"
    ... />
<Button
    android:id="@id/button2"
    android:nextFocusLeft="@id/button1"
    android:nextFocusDown="@id/editText1"
    ... />
<EditText
    android:id="@id/editText1"
    android:nextFocusUp="@id/button1"
    ...  />

अन्य संसाधन

इस बारे में ज़्यादा जानने के लिए, यहां दिए गए लेख पढ़ें: