टेक्स्ट फ़ील्ड में फ़ोकस करना

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

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

KeyboardOptions का इस्तेमाल करके, सॉफ़्टवेयर कीबोर्ड पर आसानी से की जाने वाली कार्रवाई उपलब्ध कराई जा सकती है. यह कार्रवाई, हार्डवेयर कीबोर्ड पर नेविगेट करने के साथ काम करती है. उदाहरण के लिए, ImeAction.Next से फ़ोकस, अगले फ़ोकस टारगेट पर चला जाता है.

एक-डाइमेंशन में फ़ोकस ट्रैवर्सल

एक-डाइमेंशन वाले फ़ोकस ट्रैवर्सल में, Tab बटन का व्यवहार, टेक्स्ट फ़ील्ड पर कॉन्फ़िगर किए गए lineLimits पर निर्भर करता है:

  • एक लाइन वाले टेक्स्ट फ़ील्ड (TextFieldLineLimits.SingleLine) Tab बटन दबाने पर, फ़ोकस यूज़र इंटरफ़ेस (यूआई) में अगले फ़ोकस टारगेट पर चला जाता है.
  • मल्टी-लाइन टेक्स्ट फ़ील्ड (TextFieldLineLimits.MultiLine() या डिफ़ॉल्ट): Tab बटन दबाने से, फ़ोकस को दूसरी जगह ले जाने के बजाय, टेक्स्ट बफ़र में टैब वर्ण (\t) जुड़ जाता है.
  • उल्टी दिशा में नेविगेट करना (Shift+Tab): Shift+Tab दबाने पर, फ़ोकस बिना किसी शर्त के पिछले फ़ोकस टारगेट पर वापस चला जाता है. यह सुविधा, एक लाइन और कई लाइनों वाले टेक्स्ट फ़ील्ड, दोनों में काम करती है.

// Single-line text field: Tab advances focus to the next focus target
BasicTextField(
    state = singleLineState,
    lineLimits = TextFieldLineLimits.SingleLine,
    modifier = Modifier.fillMaxWidth()
)

// Multi-line text field: Tab inserts '\t'; Shift + Tab moves to previous target
BasicTextField(
    state = multiLineState,
    lineLimits = TextFieldLineLimits.MultiLine(),
    modifier = Modifier.fillMaxWidth()
)

टू-डाइमेंशनल फ़ोकस ट्रैवर्सल

ऐरो बटन (या डी-पैड) का इस्तेमाल करने पर, डायरेक्शनल बटन सबसे पहले टेक्स्ट कर्सर (कैरेट) को टेक्स्ट फ़ील्ड में ले जाते हैं:

  • वर्टिकल नेविगेशन (ऊपर / नीचे): Down बटन दबाने पर, कर्सर एक-एक करके नीचे की ओर बढ़ता है. जब कैरेट आखिरी लाइन पर पहुंचता है, तो डाउन बटन को फिर से दबाने पर, फ़ोकस टेक्स्ट फ़ील्ड के नीचे मौजूद बगल के फ़ोकस टारगेट पर चला जाता है. पहली लाइन पर अप बटन दबाने से, फ़ोकस पिछले फ़ोकस टारगेट पर चला जाता है.
  • हॉरिज़ॉन्टल नेविगेशन (बाएं / दाएं / शुरू / आखिर): हॉरिज़ॉन्टल ऐरो बटन दबाने से, कर्सर वर्णों के बीच मूव करता है. जब कैरेट, टेक्स्ट बफ़र की शुरुआत या आखिर में पहुंचता है, तो दिशा बताने वाली बटन को फिर से दबाने पर, फ़ोकस उस दिशा में मौजूद बगल के फ़ोकस टारगेट पर चला जाता है.

Android TV पर टेक्स्ट फ़ील्ड

Android TV पर, फ़िज़िकल कीबोर्ड के बिना डी-पैड कंट्रोलर का इस्तेमाल करना:

  1. किसी टेक्स्ट फ़ील्ड पर फ़ोकस करने से, ऑन-स्क्रीन सॉफ़्टवेयर कीबोर्ड अपने-आप दिखने लगता है.
  2. उपयोगकर्ता, डी-पैड का इस्तेमाल करके सॉफ़्टवेयर कीबोर्ड के बटन पर नेविगेट करता है.
  3. वापस जाएं बटन दबाने से, सॉफ़्टवेयर कीबोर्ड बंद हो जाता है. हालांकि, टेक्स्ट फ़ील्ड पर फ़ोकस बना रहता है.
  4. सॉफ़्टवेयर कीबोर्ड को खारिज करने के बाद, डी-पैड के डायरेक्शनल बटन दबाने से, फ़ोकस स्क्रीन पर मौजूद आस-पास के फ़ोकस टारगेट पर चला जाता है.
  5. वापस जाएं बटन को दूसरी बार दबाने पर, सिस्टम का स्टैंडर्ड बैक नेविगेशन ट्रिगर होता है.