Android:为自定义视图添加辅助功能

时间:2013-12-17 01:04:23

标签: java android view accessibility

我正在尝试在Android应用的几个自定义视图上实现辅助功能。

我已经简化了Google Authenticator app中没有运气的内容:

public class CardView extends RelativeLayout {

    // ...

    @Override
    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
        event.setClassName(this.getClass().getName());
        event.setPackageName(this.getContext().getPackageName());
        event.getText().add("Card Test");
        return true;
    }
}

当它在ListView或ViewPager中时,所有的TalkBack报告都是“双击以选择”。

ViewPager是否会覆盖辅助功能事件?

我需要做什么才能让TalkBack在ViewPagers和ListViews中说“卡片测试”,就像我期望的那样?

3 个答案:

答案 0 :(得分:2)

对于当前版本的Android,您需要设置视图的内容描述。

  myView.setContentDescription("Card Test");

答案 1 :(得分:0)

ListView及相关课程要求您使用onItemSelectedListener,而不是为每个视图分配onClickListener(理所当然)。

答案 2 :(得分:0)

如果纳入alanv的建议,试着说服android系统读出内容描述

if(accessibilityModeIsEnabled())//检查context.getSystemService的自定义方法(Context.ACCESSIBILITY_SERVICE).isEnabled()

myView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_HOVER_ENTER);

或AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED。

或requestFocus

当myView可见时,上面应该完成。当宽度和高度均为正值时,可能在onMesasure期间

如果列表视图仍然无法执行此操作,请尝试对列表视图的第一个元素执行上述操作。 Android中的辅助功能会将设备与设备区分开来,而不是一种策略适合所有

相关问题