ترتیب پیمایش فوکوس را تغییر دهید

بخش سفارش پیمایش فوکوس پیش‌فرض توضیح داد که چگونه Compose به طور خودکار رفتار پیمایش فوکوس را به عناصر شما اضافه می‌کند، هم برای ناوبری یک بعدی (کلید tab ) و هم برای پیمایش دو بعدی (کلیدهای پیکان). در برخی موارد، ممکن است لازم باشد این رفتار پیش‌فرض را نادیده بگیرید و در مورد ترتیب پیمایش مورد نیاز صریح‌تر باشید.

لغو ترتیب پیمایش یک بعدی

برای تغییر ترتیب پیش‌فرض پیمایش فوکوس برای پیمایش یک‌بعدی، مجموعه‌ای از مراجع ایجاد می‌کنید، یکی برای هر ترکیب قابل فوکوس کردن:

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

سپس، از اصلاح کننده focusRequester برای مرتبط کردن هر یک از آنها با یک 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") }
    }
}

اکنون می توانید از اصلاح کننده focusProperties برای تعیین یک ترتیب پیمایش سفارشی استفاده کنید:

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

لغو ترتیب پیمایش دو بعدی

همچنین امکان افزودن کنترل دقیق بر ترتیب پیمایش فوکوس برای ناوبری دو بعدی با کلیدهای جهت دار وجود دارد. برای هر عنصر، می‌توانید مقصد پیش‌فرض پیمایش را برای هر یک از جهت‌ها با افزودن اصلاح‌کننده focusProperties و مشخص کردن موردی که به سمت بالا، پایین یا هر جهت دیگری می‌آید، لغو کنید:

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

این تکنیک نه تنها به طور موثر از فلش های صفحه کلید استفاده می کند، بلکه با D-Pads و میله ها روی کنترلرهای سیمی و بی سیم کار می کند.

{% کلمه به کلمه %} {% آخر کلمه %} {% کلمه به کلمه %} {% آخر کلمه %}