在专用互动模式(例如嵌入式绘图画布、游戏控制器表面或模态输入对话框)中,您的应用可能需要暂时将焦点锁定到单个组件,并防止用户通过 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") }