0

나중에 "멋지다"와 함께 host보기 안에있는 텍스트에 음성 안내 지원을 받으려고합니다.AccessibilityDelegate의 AccessibilityNodeInfo에서보기에서 텍스트를 추출하는 방법은 무엇입니까?

이렇게하려면 선형 레이아웃에서 액세스 가능성 대리자를 설정 중이지만 info 매개 변수의 text 및 contentDescription 속성은 항상 null입니다. 즉 info.getText()info.getContentDescription()은 항상 null을 반환합니다. 중첩 TextViews에서 텍스트를 추출 할 수 없습니다.

따라서 host 매개 변수는 내부에 다른 중첩 선형 레이아웃을 포함하는 선형 레이아웃입니다. 이 중첩 된 선형 레이아웃에는 차례대로 더 많은 중첩 된 레이아웃과 텍스트 뷰가 자식으로 포함됩니다.

linearLayout.setAccessibilityDelegate(new View.AccessibilityDelegate() 
{ 
    @Override 
    public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) 
    { 
     super.onInitializeAccessibilityNodeInfo(host, info); 

     String newWordsToSay = info.getText() + " is cool" 
     //info.getText() CRASHES due to null pointer exception 
     info.setContentDescription(info.setText(newWordsToSay)); 
    } 
}); 

편집 (나는 21+ API를 목표로하고) 다음 host PARAM을 확인에서 예상되는 중첩 TextViews 모두는 각각의 텍스트 필드가 있습니다. 문제는 텍스트를 추출 할 수 없다는 것입니다.

도움을 주시면 감사하겠습니다.

+0

ViewGroup에 콘텐츠 설명을 설정하면 음성 안내 지원에서 자식 요소의 텍스트를 모으는 것을 방지 할 수 있습니다. 하위 텍스트를 수동으로 집계하여이를 사용하여 컨텐트 설명을 채워야합니다. 또는 0px TextView를 자식으로 추가하고 추가 할 텍스트를 지정할 수 있습니다. 두 접근법 모두 접근성 API가 설계된 것이 아니기 때문에 어느 방식도 매우 신뢰할 수 있습니다. – alanv

답변

1

자녀를 반복해야하는 것처럼 보입니다.

View::addChildrenForAccessibility(ArrayList<View> list) 메서드를 사용하여 접근성 관련 어린이를 수집 할 수 있으며 전달 된 list을 채 웁니다.

+0

이 작품! 감사! – Vinnie

관련 문제