Odak geçiş sırasını değiştirme

Varsayılan odaklama geçişi sırası bölümünde, Oluşturma Aracı'nın Hem tek boyutlu (tab tuşu) ve iki boyutlu (ok tuşları) gezinme. Bazılarında durumlarda, bu varsayılan davranışı geçersiz kılmanız ve daha açık bir şekilde hakkında bilgi verin.

Tek boyutlu geçiş sırasını geçersiz kıl

Tek boyutlu gezinme için varsayılan odaklamanın geçiş sırasını değiştirmek üzere her odaklanılabilir composable için bir tane olmak üzere bir referans grubu oluşturun:

val (first, second, third, fourth) = remember { FocusRequester.createRefs() }

Ardından, her birini birfocusRequester composable:

Column {
    Row {
        TextButton({}, Modifier.focusRequester(first)) { Text("First field") }
        TextButton({}, Modifier.focusRequester(third)) { Text("Third field") }
    }

    Row {
        TextButton({}, Modifier.focusRequester(second)) { Text("Second field") }
        TextButton({}, Modifier.focusRequester(fourth)) { Text("Fourth field") }
    }
}

Artık özel bir geçiş sırası belirtmek için focusProperties değiştiricisini kullanabilirsiniz:

Column {
    Row {
        TextButton(
            {},
            Modifier
                .focusRequester(first)
                .focusProperties { next = second }
        ) {
            Text("First field")
        }
        TextButton(
            {},
            Modifier
                .focusRequester(third)
                .focusProperties { next = fourth }
        ) {
            Text("Third field")
        }
    }

    Row {
        TextButton(
            {},
            Modifier
                .focusRequester(second)
                .focusProperties { next = third }
        ) {
            Text("Second field")
        }
        TextButton(
            {},
            Modifier
                .focusRequester(fourth)
                .focusProperties { next = first }
        ) {
            Text("Fourth field")
        }
    }
}

İki boyutlu geçiş sırasını geçersiz kıl

Ayrıca, odaklanma geçişi sırası üzerinde ayrıntılı denetim eklemek de mümkündür. iki boyutlu gezinme için ok tuşlarıyla kullanın. Her öğe için şunları yapabilirsiniz: focusProperties değiştiricisini açıp gösterilecek öğeyi belirterek aşağıya doğru veya başka bir yöne

TextButton(
    onClick = {},
    modifier = Modifier
        .focusRequester(fourth)
        .focusProperties {
            down = third
            right = second
        }
) {}

Bu teknik yalnızca klavye oklarını kullanmakla kalmaz, Kablolu ve kablosuz kumandalardaki d-pad'ler ve çubuklar.

ziyaret edin.