2015-02-02 2 views
8

네 개의 TextView가 있습니다. 사용자가 음성 안내 지원 및 터치 제스처를 사용하여 탐색 할 때 포커스를 얻는 순서를 제어하려고합니다. 사용자가 음성 안내 지원 켜면nextFocusDown이 음성 안내 지원 탐색 기능과 함께 작동하지 않는 이유는 무엇입니까?

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"/> 

, 나는 순서가 foo-> baz-> 바 -> qux 가고 싶어, "foo는"닿아 TextViews 사이를 이동 아래로지나 가게한다. 그러나 nextFocusDown을 사용하여 설정하려고하는 순서는 아무 효과가없는 것 같으며 대신 포커스 순서는 항상 화면의 TextView 위치를 따릅니다. clickable, focusable 및 focusableInTouchMode의 가능한 모든 조합을 시도했습니다. 코드의 뷰에 setNextFocusDownId를 호출 해 보았습니다. 나는 TextViews에 android : imeOptions = "actionNext"를 설정해 보았습니다. 아무것도 작동하는 것 같습니다. 내가 뭘 놓치고 있니?

+0

. 도움이 필요하다. – conca

답변

2

NextFocusDown은 TalkBack 동작을 나타내지 않습니다. 그것은 트랙 볼과 키보드 화살표 키 네비게이션을 의미합니다. TalkBack 탐색 동작은 다음 포커스를 위해 아래/오른쪽으로 스 와이프하고 이전 포커스를 위/왼쪽으로 스 와이프하는 것으로 제한됩니다. 물론 탐색을 위해 드래그하십시오.

+0

하지만 ... 다음과 이전 포커스를 설정할 수있는 방법이 있습니까? – conca

+0

나는 당신이 찾고있는 것이 다음 포커스 포워드라고 믿습니다. https://developer.android.com/reference/android/view/View.html#attr_android:nextFocusForward 앞으로 초점과 뒤로 초점은 반사적입니다. 따라서 "nextForwardFocus"를 요소로 설정하면 해당 요소의 nextFocusBackward가 자동으로 설정됩니다. 예 : element1.setNextForwardFocusId (element2.id)는 element2의 nextBackwardFocus를 element1로 자동 설정합니다. – ChrisCM

2

음성 안내선 탐색을 구성하려면 View.setAccessibilityTraversalAfter(int)View.setAccessibilityTraversalBefore(int)을 사용해보세요.

앞으로
  • (아래 오른쪽으로 스 와이프)
  • 다시 (위 왼쪽 또는 스 와이프) : 음성 안내 지원은 두 가지 방향을 가지고 있습니다.

예 : 저도 같은 문제를 가지고있다

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

정확히 내가 필요한 것입니다. 고마워요. –

+0

이러한 API는 API 22부터 사용할 수 있습니다. '- ( – azizbekian