फ़ोकस को हटाना और उसे दूसरी जगह ले जाना

FocusManager की मदद से, फ़ोकस को किसी भी दिशा में ले जाया जा सकता है या उसे पूरी तरह से हटाया जा सकता है. कॉम्पोनेंट को सीधे तौर पर टारगेट करने के लिए, FocusRequester का इस्तेमाल करें. इसके बारे में ज़्यादा जानने के लिए, प्रोग्राम के हिसाब से फ़ोकस का अनुरोध करना लेख पढ़ें.

FocusManager की मदद से, फ़ोकस को किसी दिशा में ले जाना

प्रोग्राम के हिसाब से फ़ोकस को किसी दिशा में ले जाने के लिए:

  1. LocalFocusManager.current का इस्तेमाल करके, FocusManager इंस्टेंस पाएं.
  2. FocusDirection वैल्यू (Next, Previous, Up, Down, Left, Right, Enter या Exit) के साथ moveFocus() को कॉल करें.

val focusManager = LocalFocusManager.current

Button(
    onClick = {
        focusManager.moveFocus(FocusDirection.Next)
    }
) {
    Text("Next Field")
}

फ़ोकस हटाएं

फ़िलहाल जिस एलिमेंट पर फ़ोकस है उससे फ़ोकस हटाने के लिए, clearFocus() को कॉल करें. उदाहरण के लिए, जब उपयोगकर्ता Esc बटन दबाता है:

val focusManager = LocalFocusManager.current

Box(
    modifier = Modifier.onPreviewKeyEvent { keyEvent ->
        if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) {
            focusManager.clearFocus()
            true
        } else {
            false
        }
    }
)

clearFocus() फ़ंक्शन में, force: Boolean = false पैरामीटर को वैकल्पिक तौर पर इस्तेमाल किया जा सकता है:

  • force = false (डिफ़ॉल्ट): यह फ़ोकस लॉक का पालन करता है. अगर चालू कॉम्पोनेंट ने फ़ोकस कैप्चर किया है, तो यह फ़ोकस को नहीं हटाएगा.
  • force = true: यह फ़ोकस को बिना किसी शर्त के हटा देता है. भले ही, किसी कॉम्पोनेंट ने फ़ोकस कैप्चर किया हो.