צילום ושחרור המיקוד

במצבי אינטראקציה מיוחדים (כמו בד ציור מוטמע, משטח של שלט משחק או תיבת דו-שיח להזנת נתונים), יכול להיות שהאפליקציה תצטרך לנעול באופן זמני את המיקוד לרכיב יחיד ולמנוע ניווט באמצעות המקש Tab או מקשי החיצים.

התמקדות בצילום

כדי להעביר את המיקוד, מפעילים את captureFocus() ב-FocusRequester:

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")
}