# FocusManager

Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/FocusManager.kt+class:androidx.compose.ui.focus.FocusManager) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0) Common/All
- Cmn

  ```
  interface FocusManager
  ```

*** ** * ** ***

## Summary

| ### Public functions |
|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusManager#clearFocus(kotlin.Boolean)(force: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Call this function to clear focus from the currently focused component, and set the focus to the root focus modifier. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusManager#moveFocus(androidx.compose.ui.focus.FocusDirection)(focusDirection: https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusDirection)` Moves focus in the specified `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusDirection`. | Cmn |

## Public functions

### clearFocus

Cmn Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun clearFocus(force: Boolean = false): Unit
```

Call this function to clear focus from the currently focused component, and set the focus to the root focus modifier.

```kotlin
import androidx.compose.foundation.clickable
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.size
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.unit.dp

val focusManager = LocalFocusManager.current
Column(Modifier.clickable { focusManager.clearFocus() }) {
    Box(Modifier.focusable().size(100.dp))
    Box(Modifier.focusable().size(100.dp))
    Box(Modifier.focusable().size(100.dp))
}
```

| Parameters |
|---|---|
| `force: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = false` | : Whether we should forcefully clear focus regardless of whether we have any components that have Captured focus. |

### moveFocus

Cmn Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun moveFocus(focusDirection: FocusDirection): Boolean
```

Moves focus in the specified `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusDirection`.

If you are not satisfied with the default focus order, consider setting a custom order using `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusProperties.modifier#(androidx.compose.ui.Modifier).focusProperties(kotlin.Function1)`.

```kotlin
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusDirection
import androidx.compose.ui.platform.LocalFocusManager

val focusManager = LocalFocusManager.current
Column {
    Row {
        Box(Modifier.focusable())
        Box(Modifier.focusable())
    }
    Row {
        Box(Modifier.focusable())
        Box(Modifier.focusable())
    }
    Button(onClick = { focusManager.moveFocus(FocusDirection.Right) }) { Text("Right") }
    Button(onClick = { focusManager.moveFocus(FocusDirection.Left) }) { Text("Left") }
    Button(onClick = { focusManager.moveFocus(FocusDirection.Up) }) { Text("Up") }
    Button(onClick = { focusManager.moveFocus(FocusDirection.Down) }) { Text("Down") }
}
```

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if focus was moved successfully. false if the focused item is unchanged. |