在特殊互動模式 (例如內嵌的繪圖畫布、遊戲控制器表面或強制回應輸入對話方塊) 中,應用程式可能需要暫時將焦點鎖定在單一元件,並防止 Tab 鍵或方向鍵導覽至其他位置。
擷取焦點
如要擷取焦點,請在 FocusRequester 上叫用 captureFocus():
val focusRequester = remember { FocusRequester() } Box( modifier = Modifier .focusRequester(focusRequester) .focusable() .onFocusChanged { focusState -> if (focusState.isFocused) { focusRequester.captureFocus() } } )
擷取焦點時,標準焦點導覽鍵 (例如 Tab) 不會將焦點移至鄰近元件。
釋放焦點
如要結束擷取狀態,並還原使用者介面中的一般焦點導覽功能,請呼叫 freeFocus():
IconButton( onClick = { focusRequester.freeFocus() } ) { Icon(Icons.Default.Close, contentDescription = "Exit focus lock") }