拍攝及放開焦點

在特殊互動模式 (例如嵌入式繪圖畫布、遊戲控制器介面或互動強制回應輸入對話方塊) 中,應用程式可能需要暫時將焦點鎖定在單一元件上,並防止 Tab 鍵或方向鍵離開。

擷取焦點

如要擷取焦點,請在 FocusRequester 上叫用 captureFocus():

val focusRequester = remember { FocusRequester() }

Box(
    modifier = Modifier
        .focusRequester(focusRequester)
        .focusable()
        .onFocusChanged { focusState ->
            if (focusState.isFocused) {
                focusRequester.captureFocus()
            }
        }
)

擷取焦點時,標準焦點導覽鍵 (例如 Tab) 不會將焦點移至鄰近元件。

釋出焦點

如要退出擷取狀態,並在整個 UI 中還原正常焦點導覽,請呼叫 freeFocus():

IconButton(
    onClick = {
        focusRequester.freeFocus()
    }
) {
    Icon(Icons.Default.Close, contentDescription = "Exit focus lock")
}