拍摄并释放焦点

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