我正在尝试在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中说“卡片测试”,就像我期望的那样?
答案 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中的辅助功能会将设备与设备区分开来,而不是一种策略适合所有