Android如何在显示RelativeLayout时获取talkBack读取文本
作者:互联网
我有一个活动,它使用以下代码为整个活动的视图添加自定义视图
activity.getWindow().getDecorView()).addView(newView)
为了显示教练标记/使用标记的屏幕.
我的自定义视图从RelativeLayout扩展而来,在其构造函数中,在屏幕底部添加了一个按钮,当单击该按钮时,将取消视图.
我已经覆盖了“dispatchDraw”方法,这样我就可以在特定位置的布局中添加多个coachmark UI对象(textview和bitmaps).这些coachmark对象使用如下代码在视图上绘制自己
canvas.save();
canvas.translate(positioning[0], positioning[1]);
textView.draw(canvas);
canvas.restore();
canvas.save();
canvas.drawBitmap(bitmap, positioning[2], positioning[3], new Paint());
canvas.restore();
ISSUE:启用TalkBack时
>当显示此教练标记视图时,没有任何内容被大声读出
这个观点
>如果用户按下文本视图和位图所在的位置,则不会出现任何问题
大声地念出来
然而,当用户按下按钮时,按钮的内容描述被大声读出.
我假设textViews和Bitmaps未被读出的原因是由于我们上面的代码在画布上呈现它们的方式.
问题1:当点击textview和位图时,有没有办法让TalkBack大声说出什么?
– 我已经尝试设置contentDescriptions并可以专注于textviews和位图,但这没有任何区别.
问题2:另一种方法是让TalkBack在显示自定义视图时读出内容,并且此文本可以汇总屏幕中显示的所有主题标记.我无法解决如何做到这一点,有没有人有任何建议?
– 我已经尝试将我的customView设置为可聚焦(setFocasable(true)并给它一个contentDescription但这不起作用.
– 我尝试在绘制自定义视图时发起操作,然后向事件添加内容描述,但这也不起作用,即
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
}
@Override
public void onInitializeAccessibilityNodeInfo (AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
// this is not read out load when the view is displayed, but is read when the view is pressed
info.setContentDescription("on Initialize Accessibility Node Info User Tips");
}
解决方法:
我最近一直在努力解决类似的问题.
简短的回答是当您希望触发TalkBack时使用View.announceForAccessibility(文本),假设您使用的是Android API 16或更高版本 – 请参阅Android docs.
但是,如果您想支持早期的Android API,可以使用View.requestFocus()进行更复杂的回答,我在此处概述了这一点:Android: How to force Explore-By-Touch/Talkback to repeat the ContentDescription of the current View in AccessibilityFocus?
我还建议您查看我针对Google的无眼睛代码提出的一些错误,这可能会为您节省一些精力:
> [TalkBack] Explore By Touch event does not pass through SeekBar’s AccessibilityEvent handling methods
> [TalkBack] AccessibilityEvents ignored when source is not set, and no way to set it
标签:android,custom-view,bitmap,relativelayout,talkback 来源: https://codeday.me/bug/20190830/1769105.html