Build apps faster with our new App builder! Check it out →

focusRestorer

Common

Modifier in Compose Ui

This modifier can be used to save and restore focus to a focus group. When focus leaves the focus group, it stores a reference to the item that was previously focused. Then when focus re-enters this focus group, it restores focus to the previously focused item.

Last updated:

Installation

dependencies {
   implementation("androidx.compose.ui:ui:1.8.0-alpha04")
}

Overloads


fun Modifier.focusRestorer(onRestoreFailed: (() -> FocusRequester)? = null): Modifier

Parameters

namedescription
onRestoreFailedcallback provides a lambda that is invoked if focus restoration fails. This lambda can be used to return a custom fallback item by providing a [FocusRequester] attached to that item. This can be used to customize the initially focused item.

Code Examples

FocusRestorerSample

@Composable
fun FocusRestorerSample() {
    LazyRow(Modifier.focusRestorer()) {
        item { Button(onClick = {}) { Text("1") } }
        item { Button(onClick = {}) { Text("2") } }
        item { Button(onClick = {}) { Text("3") } }
        item { Button(onClick = {}) { Text("4") } }
    }
}

FocusRestorerCustomFallbackSample

@Composable
fun FocusRestorerCustomFallbackSample() {
    val focusRequester = remember { FocusRequester() }
    LazyRow(
        // If restoration fails, focus would fallback to the item associated with focusRequester.
        Modifier.focusRestorer { focusRequester }
    ) {
        item {
            Button(modifier = Modifier.focusRequester(focusRequester), onClick = {}) { Text("1") }
        }
        item { Button(onClick = {}) { Text("2") } }
        item { Button(onClick = {}) { Text("3") } }
        item { Button(onClick = {}) { Text("4") } }
    }
}
by @alexstyl