هدف‌های کانونی

هدف تمرکز عنصر میانای کاربری است که تمرکز صفحه‌کلید می‌تواند به آن منتقل شود. کاربران می‌توانند تمرکز صفحه‌کلید را با کلید جهش یا کلیدهای جهت‌نما (پیکان) جابه‌جا کنند:

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

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

مؤلفه تعاملی به‌طور پیش‌فرض هدف تمرکز است. به‌عبارت دیگر، اگر کاربران بتوانند روی عنصر میانای کاربر تک‌ضرب بزنند یا کلیک کنند، آن عنصر هدف تمرکز است.

برای مثال، سه مؤلفه کارت را درنظر بگیرید. اگر کارت اول و سوم تعاملی باشند (یک فراخوان onClick تعریف کنند)، اما کارت دوم صرفاً اطلاعاتی باشد (بدون مدیریت کلیک)، فشردن کلید Tab روی کارت اول، کارت دوم را رد می‌کند و مستقیماً به کارت سوم می‌رود.

Card(onClick = { /* First card action */ }) {
    Text("Card 1 (Interactive)")
}
Card {
    Text("Card 2 (Informational - not focusable)")
}
Card(onClick = { /* Third card action */ }) {
    Text("Card 3 (Interactive)")
}

با ارائه پارامتر onClick می‌توانید کارت دوم را به هدف تمرکز تبدیل کنید:

Card(onClick = { /* Second card action */ }) {
    Text("Card 2 (Now interactive and focusable)")
}

اصلاح‌کننده clickable همچنین عناصر واسط کاربر سفارشی یا استاندارد را به هدف‌های تمرکز تبدیل می‌کند. برای جزئیات، به تک‌ضرب زدن و فشار دادن مراجعه کنید.

Box(
    modifier = Modifier
        .clickable { /* Handle click */ }
) {
    Text("Custom interactive element")
}

تبدیل کردن composable به هدف تمرکز غیرقابل‌کلیک

اصلاح‌گر focusable یک composable را بدون نیاز به معناشناسی کلیک به هدف تمرکز تبدیل می‌کند. کاربران می‌توانند فوکوس صفحه‌کلید را به ترکیب‌پذیر اصلاح‌شده منتقل کنند (برای مثال، برای بررسی محتوا با ابزارهای دسترس‌پذیری یا پیمایش نمای دید)، اما فشار دادن کلیدهای Enter یا Space کنش کلیک را راه‌اندازی نمی‌کند:

Box(
    modifier = Modifier
        .focusable()
) {
    Text("Non-clickable focus target")
}

غیرقابل‌تمرکز کردن composable

در برخی سناریوها، ممکن است بخواهید یک عنصر تعاملی را از پیمایش صفحه‌کلید مستثنی کنید بدون اینکه رویدادهای اشاره‌گر یا کلیک را غیرفعال کنید. با تنظیم canFocus = false در اصلاح‌کننده focusProperties می‌توانید از دریافت تمرکز توسط مؤلفه جلوگیری کنید:

var checked by remember { mutableStateOf(false) }

Switch(
    checked = checked,
    onCheckedChange = { checked = it },
    // Prevent component from being focused
    modifier = Modifier
        .focusProperties { canFocus = false }
)