Odak hedefi, klavye odağının taşınabileceği bir kullanıcı arayüzü öğesidir. Kullanıcılar, klavye odağını Sekme tuşu veya yön (ok) tuşlarıyla hareket ettirebilir:
- Sekme veya Üst Karakter+Sekme: Odağı tek boyutlu görünüm sırasına göre ileri veya geri taşır.
- Yön tuşları: Odağı iki boyutlu olarak hareket ettirir (Yukarı, Aşağı, Sol ve Sağ).
Etkileşimli kullanıcı arayüzü öğeleri varsayılan olarak odaklanma hedefleridir
Etkileşimli bileşenler varsayılan olarak odak hedefidir. Başka bir deyişle, kullanıcıların dokunabileceği veya tıklayabileceği kullanıcı arayüzü öğeleri odak hedefidir.
Örneğin, üç Card bileşeni düşünün. İlk ve üçüncü kartlar etkileşimliyse (onClick geri çağırma işlevi tanımlıyorsa) ancak ikinci kart yalnızca bilgilendirme amaçlıysa (tıklama işleme özelliği yoksa) ilk kartta Sekme tuşuna basıldığında ikinci kart atlanır ve doğrudan üçüncü karta geçilir.
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 parametresi sağlayarak ikinci kartı odak hedefi yapabilirsiniz:
Card(onClick = { /* Second card action */ }) { Text("Card 2 (Now interactive and focusable)") }
clickable değiştiricisi, özel veya standart kullanıcı arayüzü öğelerini odak hedeflerine de dönüştürür. Ayrıntılar için Dokunma ve basma bölümüne bakın.
Box( modifier = Modifier .clickable { /* Handle click */ } ) { Text("Custom interactive element") }
Bir composable'ı tıklanamayan bir odak hedefi yapma
focusable değiştiricisi, tıklama semantiği gerektirmeden bir composable'ı odak hedefi haline getirir. Kullanıcılar, klavye odağını değiştirilen composable'a taşıyabilir (örneğin, erişilebilirlik araçlarıyla içeriği incelemek veya görüntü alanını kaydırmak için) ancak Enter ya da Boşluk tuşlarına basıldığında tıklama işlemi tetiklenmez:
Box( modifier = Modifier .focusable() ) { Text("Non-clickable focus target") }
Bir composable'ı odaklanamaz hale getirme
Bazı durumlarda, işaretçi veya tıklama etkinliklerini devre dışı bırakmadan etkileşimli öğeleri klavye gezinmesinden hariç tutmak isteyebilirsiniz. focusProperties değiştiricisinde canFocus = false değerini ayarlayarak bir bileşenin odaklanmasını engelleyebilirsiniz:
var checked by remember { mutableStateOf(false) } Switch( checked = checked, onCheckedChange = { checked = it }, // Prevent component from being focused modifier = Modifier .focusProperties { canFocus = false } )
Sizin için önerilenler
- Not: JavaScript devre dışı bırakıldığında bağlantı metni gösterilir.
- Odak geçiş sırası
- Metin alanlarına odaklanma
- Grup odak hedefleri
- Odaklanma durumunu belirtme
- Odaklanarak gezinmeyi test etme