2014-11-04 24 views
8

Erişilebilirlik odaklama sırasını değiştirmek mümkün müdür? Örneğin, ids view1, view2 ve view3 ile yan yana 3 görünümüm varsa, kullanıcı view1'den sağa kaydırdığında erişilebilirlik odağını view3'e çıkarmanın basit bir yolu var mıdır? İşte Erişilebilirlik odak sırasını değiştirin

denedim budur:

Ben doğrusal düzende şu var.

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView" 
    android:focusable="true" 
    android:nextFocusUp="@+id/imageView3" 
    android:nextFocusDown="@+id/imageView3" 
    android:nextFocusRight="@+id/imageView3" 
    android:nextFocusLeft="@+id/imageView3" 
    android:nextFocusForward="@+id/imageView3" 
    android:src="@drawable/ic_launcher"/> 

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView2" 
    android:focusable="true" 
    android:src="@drawable/ic_launcher"/> 

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView3" 
    android:focusable="true" 
    android:nextFocusUp="@+id/imageView2" 
    android:nextFocusDown="@+id/imageView2" 
    android:nextFocusRight="@+id/imageView2" 
    android:nextFocusLeft="@+id/imageView2" 
    android:nextFocusForward="@+id/imageView2" 
    android:src="@drawable/ic_launcher"/> 

Ardından bunu başlatıp erişilebilirlik odağını ilk resme yerleştiriyorum. Bir sonraki maddeye geçmek için hızlıca kaydırarak, erişilebilirlik odağını imageView3'e taşımasını beklerim, ancak bunun yerine imageView2'ye gider.

+2

Teknik olarak evet, bir AccessibilityDelegate ayarladıysanız ve çocuk düğümlerini el ile eklerseniz, geçiş sırasını açıkça belirtebilirsiniz, ancak TalkBack, odak traversalini nasıl işlediğini değiştirirse, bu diğer sorunlara neden olur ve çalışmasının garanti edilmez. Erişilebilirlik çerçevesine karşı hala açık bir özellik talebi. – alanv

+0

@ alanv Olağanüstü özellik isteğiyle ilgili bir bağlantınız var mı? Onun ilerlemesini takip etmeyi çok isterim. Geçiş sırasını değiştirmek, yeni Yüzer Eylem Düğmesi için özellikle yararlı olacaktır. Otomatik yükleme listesinin üzerinden geçiyorsa, bir kullanıcı doğru bir şekilde kaydırarak bulamayabilir. (Bkz. Örneğin bu sorunun inbox) –

+0

Nevermind, sadece API 22'ye eklenmiş gibi görünüyor! Özgün quesitona bir cevap eklendi. –

cevap

8

Artık API 22+ için TalkBack geçiş sırasını ayarlayabiliyorsunuz! Yani kodu şöyle görünecektir:

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView" 
    android:focusable="true" 
    android:src="@drawable/ic_launcher"/> 

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView2" 
    android:focusable="true" 
    android:accessibilityTraversalAfter="@id/imageView3" 
    android:src="@drawable/ic_launcher"/> 

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/imageView3" 
    android:focusable="true" 
    android:accessibilityTraversalAfter="@id/imageView" 
    android:src="@drawable/ic_launcher"/> 

http://developer.android.com/reference/android/R.attr.html#accessibilityTraversalAfter

accessibilityTraversalAfter: bu seferki erişilebilirlik kastetmek ziyaret için geçecek bakış kimliği ayarlar.

+10

<22 versiyonları için bunun bir çözümü var mı? – vtlinh

+3

Sanırım @vtlinh soru orijinal olandan daha önemli. 22 çok yeni. Eski sürümler için çözümün ne olduğunu bilen var mı? – Carlos

+0

Bunu bir "RecyclerView" öğesinde kullanarak deneyimliyorum. Mevcut öğeyi geçtikten sonra listenin bir sonraki öğesine atlar. – azizbekian