{% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %} {% include "_shared/_reference-head-tags.html" %}

FocusOrderModifierKt

public final class FocusOrderModifierKt


Summary

Public methods

static final @NonNull Modifier
focusOrder(
    @NonNull Modifier receiver,
    @ExtensionFunctionType @NonNull Function1<@NonNull FocusOrderUnit> focusOrderReceiver
)

This method is deprecated. Use focusProperties() instead

static final @NonNull Modifier
focusOrder(
    @NonNull Modifier receiver,
    @NonNull FocusRequester focusRequester
)

This method is deprecated. Use focusRequester() instead

static final @NonNull Modifier
focusOrder(
    @NonNull Modifier receiver,
    @NonNull FocusRequester focusRequester,
    @ExtensionFunctionType @NonNull Function1<@NonNull FocusOrderUnit> focusOrderReceiver
)

This method is deprecated. Use focusProperties() and focusRequester() instead

Public methods

focusOrder

public static final @NonNull Modifier focusOrder(
    @NonNull Modifier receiver,
    @ExtensionFunctionType @NonNull Function1<@NonNull FocusOrderUnit> focusOrderReceiver
)

Use this modifier to specify a custom focus traversal order.

import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusProperties
import androidx.compose.ui.focus.focusRequester

Column(Modifier.fillMaxSize(), Arrangement.SpaceEvenly) {
    val (item1, item2, item3, item4) = remember { FocusRequester.createRefs() }
    Row(Modifier.fillMaxWidth(), Arrangement.SpaceEvenly) {
        Box(
            Modifier
                .focusRequester(item1)
                .focusProperties {
                    next = item2
                    right = item2
                    down = item3
                    previous = item4
                }
                .focusable()
        )
        Box(
            Modifier
                .focusRequester(item2)
                .focusProperties {
                    next = item3
                    right = item1
                    down = item4
                    previous = item1
                }
                .focusable()
        )
    }
    Row(Modifier.fillMaxWidth(), Arrangement.SpaceEvenly) {
        Box(
            Modifier
                .focusRequester(item3)
                .focusProperties {
                    next = item4
                    right = item4
                    up = item1
                    previous = item2
                }
        )
        Box(
            Modifier
                .focusRequester(item4)
                .focusProperties {
                    next = item1
                    left = item3
                    up = item2
                    previous = item3
                }
        )
    }
}
Parameters
@ExtensionFunctionType @NonNull Function1<@NonNull FocusOrderUnit> focusOrderReceiver

Specifies FocusRequesters that are used when the user wants to move the current focus to the next item, or wants to move focus left, right, up or down.

focusOrder

public static final @NonNull Modifier focusOrder(
    @NonNull Modifier receiver,
    @NonNull FocusRequester focusRequester
)

A modifier that lets you specify a FocusRequester for the current composable so that this focusRequester can be used by another composable to specify a custom focus order.

import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusProperties
import androidx.compose.ui.focus.focusRequester

Column(Modifier.fillMaxSize(), Arrangement.SpaceEvenly) {
    val (item1, item2, item3, item4) = remember { FocusRequester.createRefs() }
    Row(Modifier.fillMaxWidth(), Arrangement.SpaceEvenly) {
        Box(
            Modifier
                .focusRequester(item1)
                .focusProperties {
                    next = item2
                    right = item2
                    down = item3
                    previous = item4
                }
                .focusable()
        )
        Box(
            Modifier
                .focusRequester(item2)
                .focusProperties {
                    next = item3
                    right = item1
                    down = item4
                    previous = item1
                }
                .focusable()
        )
    }
    Row(Modifier.fillMaxWidth(), Arrangement.SpaceEvenly) {
        Box(
            Modifier
                .focusRequester(item3)
                .focusProperties {
                    next = item4
                    right = item4
                    up = item1
                    previous = item2
                }
        )
        Box(
            Modifier
                .focusRequester(item4)
                .focusProperties {
                    next = item1
                    left = item3
                    up = item2
                    previous = item3
                }
        )
    }
}

focusOrder

public static final @NonNull Modifier focusOrder(
    @NonNull Modifier receiver,
    @NonNull FocusRequester focusRequester,
    @ExtensionFunctionType @NonNull Function1<@NonNull FocusOrderUnit> focusOrderReceiver
)

A modifier that lets you specify a FocusRequester for the current composable along with focusOrder.