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

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")
}

फ़ोकस साफ़ हो

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

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: यह फ़ोकस को बिना किसी शर्त के हटा देता है. भले ही, किसी कॉम्पोनेंट ने फ़ोकस कैप्चर किया हो.