फ़ोकस ट्रैवर्सल ऑर्डर बदलें

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

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

एक-डाइमेंशन वाले नेविगेशन का डिफ़ॉल्ट फ़ोकस ट्रैवर्सल ऑर्डर बदलने के लिए, आपको हर फ़ोकस करने लायक कंपोज़ेबल के लिए, रेफ़रंस का एक सेट बनाएं:

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

इसके बाद, दोनों को एक साथ जोड़ने के लिए focusRequester मॉडिफ़ायर का इस्तेमाल करें कंपोज़ेबल:

Column {
    Row {
        TextButton({}, Modifier.focusRequester(first)) { Text("First field") }
        TextButton({}, Modifier.focusRequester(third)) { Text("Third field") }
    }

    Row {
        TextButton({}, Modifier.focusRequester(second)) { Text("Second field") }
        TextButton({}, Modifier.focusRequester(fourth)) { Text("Fourth field") }
    }
}

अब आप कस्टम ट्रैवर्सल ऑर्डर तय करने के लिए focusProperties मॉडिफ़ायर का इस्तेमाल कर सकते हैं:

Column {
    Row {
        TextButton(
            {},
            Modifier
                .focusRequester(first)
                .focusProperties { next = second }
        ) {
            Text("First field")
        }
        TextButton(
            {},
            Modifier
                .focusRequester(third)
                .focusProperties { next = fourth }
        ) {
            Text("Third field")
        }
    }

    Row {
        TextButton(
            {},
            Modifier
                .focusRequester(second)
                .focusProperties { next = third }
        ) {
            Text("Second field")
        }
        TextButton(
            {},
            Modifier
                .focusRequester(fourth)
                .focusProperties { next = first }
        ) {
            Text("Fourth field")
        }
    }
}

द्वि-आयामी ट्रैवर्सल क्रम को ओवरराइड करें

फ़ोकस ट्रैवर्सल ऑर्डर पर बारीकी से कंट्रोल करना भी मुमकिन है का इस्तेमाल किया जा सकता है. हर एलिमेंट के लिए, ये काम किए जा सकते हैं focusProperties मॉडिफ़ायर और उसमें आने वाले आइटम की जानकारी देना, नीचे या किसी और दिशा में:

TextButton(
    onClick = {},
    modifier = Modifier
        .focusRequester(fourth)
        .focusProperties {
            down = third
            right = second
        }
) {}

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