שינוי סדר מעבר הפוקוס

בקטע סדר ברירת המחדל של מעבר המיקוד מתואר אופן הכתיבה מוסיף באופן אוטומטי לאלמנטים שלך התנהגות של מעבר מיקוד, ניווט חד-ממדי (מקש tab) וניווט דו-ממדי (מקשי חיצים). בחלק מהמקרים במקרים מסוימים, ייתכן שיהיה צורך לעקוף את התנהגות ברירת המחדל ולהציג על סדר המעבר הנדרש.

שינוי סדר מעבר חד-ממדי

כדי לשנות את סדר ברירת המחדל של מעבר המיקוד עבור ניווט חד-ממדי, צריך יוצרים סט של קובצי עזר, אחד לכל תוכן קומפוזבילי שניתן להתמקד בו:

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

לאחר מכן, משתמשים בתכונת הצירוף focusRequester כדי לשייך כל אחת מהן קומפוזבילי:

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

הטכניקה הזו משתמשת ביעילות בחיצים במקלדת, אלא גם יכולה לעבוד עם משטחים חשמליים ומדבקים לבקרים קוויים ואלחוטיים.