2015-02-02 19 views
8

Tôi có bốn TextView và tôi đang cố gắng kiểm soát thứ tự mà họ lấy nét khi người dùng điều hướng bằng TalkBack và cử chỉ chạm.Tại sao nextFocusDown không hoạt động với điều hướng TalkBack?

TextView android:text="foo" android:clickable="false" android:focusable="true" android:focusableInTouchMode="true" android:id="@+id/id_foo" android:nextFocusDown="@+id/id_baz"/> 

TextView android:text="bar" android:clickable="false" android:focusable="true" android:focusableInTouchMode="true" android:id="@+id/id_bar" android:nextFocusDown="@+id/id_qux"/> 

TextView android:text="baz" android:clickable="false" android:focusable="true" android:focusableInTouchMode="true" android:id="@id/id_baz" android:nextFocusDown="@id/id_bar"/> 

TextView android:text="qux" android:clickable="false" android:focusable="true" android:focusableInTouchMode="true" android:id="@id/id_qux" android:nextFocusDown="@id/id_foo"/> 

Khi một người dùng bật TalkBack, chạm "foo", và sau đó swipes xuống để di chuyển giữa các TextView, tôi muốn để đi foo-> baz-> bar-> qux. Tuy nhiên, thứ tự tôi cố gắng thiết lập bằng cách sử dụng nextFocusDown dường như không có hiệu lực, và thay vào đó, thứ tự lấy nét luôn luôn theo sau vị trí của TextViews trên màn hình. Tôi đã thử mọi kết hợp có thể có của clickable, focusable và focusableInTouchMode. Tôi đã thử gọi setNextFocusDownId trên các khung nhìn trong mã. Tôi đã thử cài đặt android: imeOptions = "actionNext" trên TextViews. Không có gì có vẻ hiệu quả. Tôi đang thiếu gì?

+0

tôi đã có cùng một vấn đề. Cần giúp đỡ. – conca

Trả lời

2

Tiếp theoFocusDown không đề cập đến cử chỉ TalkBack. Nó đề cập đến điều hướng phím mũi tên theo dõi và bàn phím. Cử chỉ khám phá TalkBack được giới hạn để vuốt xuống/phải để lấy tiêu điểm tiếp theo và vuốt lên/sang trái để lấy nét trước. Và tất nhiên, kéo để khám phá.

+0

nhưng ... có cách nào để đặt trọng tâm tiếp theo và trước đó không? – conca

+0

Tôi tin rằng những gì bạn đang tìm kiếm là nextFocusForward. https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusForward Chuyển tiếp tiêu điểm và tiêu điểm lạc hậu là phản xạ. Vì vậy, nếu bạn đặt "nextForwardFocus" thành phần tử, nextFocusBackward của phần tử đó sẽ được đặt tự động. Ví dụ: element1.setNextForwardFocusId (element2.id), sẽ tự động đặt nextBackwardFocus của phần tử2 được đặt thành element1. – ChrisCM

2

Hãy thử sử dụng View.setAccessibilityTraversalAfter(int)View.setAccessibilityTraversalBefore(int) để định cấu hình điều hướng TalkBack. Xin lưu ý rằng TalkBack chỉ có hai hướng:

  • về phía trước (swipe sang phải hoặc xuống)
  • lại (vuốt sang trái hoặc lên).

Ví dụ:

findView(R.id.bar).setAccessibilityTraversalBefore(R.id.quix); 
+0

Đó là chính xác những gì tôi cần. Cảm ơn bạn. –

+0

Các API đó có sẵn bắt đầu từ API 22: '- ( – azizbekian

Các vấn đề liên quan