拍攝及放開焦點

在特殊互動模式 (例如內嵌的繪圖畫布、遊戲控制器表面或強制回應輸入對話方塊) 中,應用程式可能需要暫時將焦點鎖定在單一元件,並防止 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")
}