我使用的Viewpager由一些相對複雜的相對佈局兄弟組成。Android AccessibilityDelegate閱讀ViewGroup而不是兒童
如果我點擊相對佈局,它會突出顯示整個頁面,並按照預期逐個讀取標題和幾個文字瀏覽。
如果我滾動viewpager,我希望talkback以同樣的方式閱讀下一頁,如果我點擊,它會讀取第一頁。其次,如果我滾動到第二,第三等頁面並單擊這些佈局,反饋將按預期閱讀。
我正試圖實現滾動事件完成後的點擊行爲。
下面是我對accessibilityDelegate的看法。
viewPager.setAccessibilityDelegate(new AccessibilityDelegate() {
@Override
public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) {
View page = viewPager.getCurrentPageView();
performAccessibilityAction(page, AccessibilityNodeInfo.ACTION_CLICK, Bundle.EMPTY);
}
return super.onRequestSendAccessibilityEvent(host, child, event);
}
});
我已驗證'page'是RelativeLayout父母,我認爲它是。 我也確認onRequestSendAccessibilityEvent
被解僱,但它沒有讀取其子女的內容。我錯過了什麼嗎?
更新
我使用
viewpager.getCurrentPageView().sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
,當我需要強制對講重讀一個項目上面工作了另一個例子也試過,但沒有任何影響,如果我嘗試它在頁面上。
感謝
這是否意味着我需要手動遞歸通過所有子節點並獲取內容描述? –
我使用onInitializeAccessibilityNodeInfo,onInitializeAccessibilityEvent,onPopulateAccessibilityEvent和onRequestSendAccessibilityEvent設置了可訪問性委託。唯一被觸發的是onRequestSendAccessibilityEvent。如果我在第一次讀取的事件上設置了內容描述,但它看起來像事件被重用,並且它不讀取第二,第三和第二次事件中設置的contentDescription。 –