ترتیب پیمایش کانونی

کاربران می‌توانند بااستفاده از کلید جهش یا کلیدهای جهت‌دار (کلیدهای جهت‌نما / D-pad)، تمرکز صفحه‌کلید را در عناصر میانای کاربر جابه‌جا کنند:

  • کلید جهش / کلید تبدیل + جهش: فوکوس را در ترتیب ظاهری یک‌بعدی به جلو یا عقب می‌برد.
  • کلیدهای جهتی: تمرکز را به‌صورت دوبعدی حرکت دهید (بالا، پایین، چپ، و راست).

پیمایش تمرکز یک‌بعدی

در پیمایش تمرکز یک‌بعدی، کلید جهش تمرکز را براساس ترتیب ظاهری در صفحه در میان «میانای کاربر» پیش می‌برد.

برای مثال، وقتی چهار دکمه در ردیف‌ها چیده شده است:

Column {
    Row {
        Button(onClick = { /* ... */ }) { Text("1st") }
        Button(onClick = { /* ... */ }) { Text("2nd") }
    }
    Row {
        Button(onClick = { /* ... */ }) { Text("3rd") }
        Button(onClick = { /* ... */ }) { Text("4th") }
    }
}

با فشار دادن کلید جهش، تمرکز به‌ترتیب در دکمه‌های زیر حرکت می‌کند:

  1. دکمه اول (بالا-شروع)
  2. دکمه دوم (بالا-انتها)
  3. دکمه سوم (پایین-شروع)
  4. دکمه چهارم (پایین-انتها)

با فشار دادن کلید جهش روی عنصر نهایی، تمرکز به اولین هدف برمی‌گردد. فشار دادن کلید تبدیل + جهش تمرکز را به‌ترتیب معکوس جابه‌جا می‌کند.

پیمایش کانونی کردن دو بعدی

فشار دادن کلیدهای جهت‌نمای صفحه‌کلید یا استفاده از پد کنترل باعث پیمایش تمرکز دو بعدی می‌شود.

در پیمایش دوبعدی، سیستم مختصات هندسی و مرزهای فضایی عناصر واسط کاربر را برای تعیین نزدیک‌ترین هدف در جهت درخواست‌شده بررسی می‌کند.

پیمایش تمرکز دوبعدی به‌صورت حلقوی نیست. اگر کاربر کلید پایین را درحالی‌که روی عنصر پایین‌ترین قسمت متمرکز است فشار دهد، تمرکز روی همان عنصر باقی می‌ماند و به بالای صفحه نمی‌رود.

بازنشانی پیمایش فوکوس با کلیک‌های اشاره‌گر

هنگام جابه‌جایی بین صفحه‌کلید فیزیکی و موشواره یا صفحه لمسی در رایانه یا دستگاه‌های دارای صفحه‌نمایش بزرگ:

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

برای جزئیات مربوط به پاک کردن تمرکز به‌صورت برنامه‌ریزی‌شده، انتقال و پاک کردن تمرکز را ببینید.

سفارشی‌سازی ترتیب پیمایش تمرکز

می‌توانید رفتار پیمایش را با کلید تغییردهنده focusProperties سفارشی‌سازی کنید.

سفارشی‌سازی ترتیب پیمایش یک‌بعدی

برای ملغی کردن پیمایش یک‌بعدی، دارایی next یا previous را با FocusRequester مشخص کنید:

  1. ایجاد شیء FocusRequester با remember { FocusRequester() }.
  2. بااستفاده از اصلاح‌گر focusRequester، FocusRequester را به عنصر ترکیبی هدف پیوست کنید.
  3. اصلاح‌گر focusProperties را به عنصر ترکیبی منبع اعمال کنید و FocusRequester را به next (برای Tab) یا previous (برای Shift+Tab) اختصاص دهید.

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

Column {
    Button(
        onClick = { /* ... */ },
        modifier = Modifier
            .focusRequester(first)
            .focusProperties { next = third }
    ) {
        Text("First (Tab jumps to Third)")
    }
    Button(
        onClick = { /* ... */ },
        modifier = Modifier.focusRequester(second)
    ) {
        Text("Second")
    }
    Button(
        onClick = { /* ... */ },
        modifier = Modifier.focusRequester(third)
    ) {
        Text("Third")
    }
}

سفارشی‌سازی ترتیب پیمایش دوبعدی

به‌همین ترتیب، می‌توانید پیمایش کانونی دوبعدی را با اختصاص دادن FocusRequester نمونه به up،‏ down،‏ start،‏ end،‏ left، یا right در focusProperties ملغی کنید:

val (topButton, bottomButton) = remember { FocusRequester.createRefs() }

Button(
    onClick = { /* ... */ },
    modifier = Modifier
        .focusRequester(topButton)
        .focusProperties {
            down = bottomButton
            right = bottomButton
        }
) {
    Text("Top button")
}
Button(
    onClick = { /* ... */ },
    modifier = Modifier.focusRequester(bottomButton)
) {
    Text("Bottom button")
}

برای مسدود کردن پیمایش کانونی در جهتی خاص (برای مثال، در مرزهای چیدمان)، FocusRequester.Cancel را به آن دارایی اختصاص دهید (برای مثال، down = FocusRequester.Cancel). برای حفظ صریح الگوریتم پیمایش پیش‌فرض سیستم برای جهتی معین، FocusRequester.Default را اختصاص دهید.