फ़ोकस ट्रैवर्सल ऑर्डर

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

  • Tab / Shift+Tab: एक डाइमेंशन वाले विज़ुअल में, फ़ोकस को आगे या पीछे ले जाएं.
  • दिशा बताने वाली कुंजियां: फ़ोकस को दो डाइमेंशन में ले जाएं (ऊपर, नीचे, बाएं, और दाएं).

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

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

उदाहरण के लिए, जब चार बटन को लाइनों में व्यवस्थित किया जाता है:

Column {
    Row {
        Button(onClick = { /* ... */ }) { Text("1st") }
        Button(onClick = { /* ... */ }) { Text("2nd") }
    }
    Row {
        Button(onClick = { /* ... */ }) { Text("3rd") }
        Button(onClick = { /* ... */ }) { Text("4th") }
    }
}

Tab बटन दबाने पर, फ़ोकस इन बटन पर क्रम से जाता है:

  1. पहला बटन (सबसे ऊपर-शुरुआत)
  2. दूसरा बटन (सबसे ऊपर)
  3. तीसरा बटन (नीचे से शुरू)
  4. चौथा बटन (सबसे नीचे)

आखिरी एलिमेंट पर Tab दबाने से, फ़ोकस पहले टारगेट पर वापस चला जाता है. Shift+Tab दबाने पर, फ़ोकस उल्टे क्रम में चला जाता है.

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

कीबोर्ड के ऐरो बटन दबाने या डी-पैड का इस्तेमाल करने से, दो डाइमेंशन में फ़ोकस ट्रैवर्सल ट्रिगर होता है.

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

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

पॉइंटर क्लिक की मदद से फ़ोकस ट्रैवर्सल को रीसेट करना

डेस्कटॉप या बड़ी स्क्रीन वाले डिवाइसों पर, फ़िज़िकल कीबोर्ड और माउस या टचपैड के बीच स्विच करते समय:

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

प्रोग्राम के हिसाब से फ़ोकस हटाने के बारे में जानकारी के लिए, फ़ोकस को हटाना और उसे दूसरी जगह ले जाना लेख पढ़ें.

फ़ोकस ट्रैवर्सल के क्रम को पसंद के मुताबिक बनाना

focusProperties मॉडिफ़ायर की मदद से, ट्रैवर्सल के तरीके को पसंद के मुताबिक बनाया जा सकता है.

एक डाइमेंशन वाले ट्रैवर्सल के क्रम को पसंद के मुताबिक बनाना

एक डाइमेंशन वाले ट्रैवर्सल को बदलने के लिए, next या previous प्रॉपर्टी को FocusRequester के साथ सेट करें:

  1. FocusRequester ऑब्जेक्ट बनाएं remember { FocusRequester() } के साथ.
  2. focusRequester मॉडिफ़ायर का इस्तेमाल करके, FocusRequester को टारगेट कॉम्पोज़ेबल से अटैच करें.
  3. सोर्स कंपोज़ेबल में focusProperties मॉडिफ़ायर लागू करें और FocusRequester को next (Tab के लिए) या previous (Shift+Tab के लिए) असाइन करें.

val (first, second, third) = remember { FocusRequester.createRefs() }

Column {
    Button(
        onClick = { /* ... */ },
        modifier = Modifier
            .focusRequester(first)
            .focusProperties { next = third }
    ) {
        Text("First (Tab jumps to Third)")
    }
    Button(
        onClick = { /* ... */ },
        modifier = Modifier.focusRequester(second)
    ) {
        Text("Second")
    }
    Button(
        onClick = { /* ... */ },
        modifier = Modifier.focusRequester(third)
    ) {
        Text("Third")
    }
}

दो डाइमेंशन वाले ट्रैवर्सल के क्रम को पसंद के मुताबिक बनाना

इसी तरह, focusProperties में मौजूद up, down, start, end, left या right को FocusRequester इंस्टेंस असाइन करके, दो डाइमेंशन वाले फ़ोकस ट्रैवर्सल को बदला जा सकता है:

val (topButton, bottomButton) = remember { FocusRequester.createRefs() }

Button(
    onClick = { /* ... */ },
    modifier = Modifier
        .focusRequester(topButton)
        .focusProperties {
            down = bottomButton
            right = bottomButton
        }
) {
    Text("Top button")
}
Button(
    onClick = { /* ... */ },
    modifier = Modifier.focusRequester(bottomButton)
) {
    Text("Bottom button")
}

किसी खास दिशा में फ़ोकस नेविगेशन को ब्लॉक करने के लिए (उदाहरण के लिए, लेआउट की सीमाओं पर), उस प्रॉपर्टी को FocusRequester.Cancel असाइन करें (उदाहरण के लिए, down = FocusRequester.Cancel). किसी दी गई दिशा के लिए, सिस्टम के डिफ़ॉल्ट ट्रैवर्सल एल्गोरिदम को साफ़ तौर पर बनाए रखने के लिए, FocusRequester.Default असाइन करें.