如何修改Android菜单项的无障碍内容描述以自定义TalkBack播报
修改Android菜单项无障碍播报内容的方案
当前你的菜单项同时设置了app:contentDescription和android:title,TalkBack会合并播报这两个内容加上默认激活提示,导致重复播报。要实现自定义播报内容,可通过以下步骤处理:
方法:结合XML与代码自定义(推荐)
1. 调整XML属性
先修改菜单XML,将android:title设为空(避免重复播报),并把app:contentDescription设为基础描述:
<item android:id="@+id/menuItemSearch" android:icon="@drawable/search" android:iconTintMode="src_atop" android:title="" android:visible="false" app:iconTint="@color/primary" app:contentDescription="Search. Button" app:showAsAction="always"/>
2. 代码中替换默认激活提示
在onCreateOptionsMenu或获取到菜单项的逻辑里,设置AccessibilityDelegate自定义双击动作的提示文本:
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.your_menu_file, menu); MenuItem searchItem = menu.findItem(R.id.menuItemSearch); searchItem.setAccessibilityDelegate(new View.AccessibilityDelegate() { @Override public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(host, info); // 移除默认点击动作,添加带自定义提示的动作 info.removeAction(AccessibilityNodeInfo.ACTION_CLICK); AccessibilityNodeInfo.Action customClickAction = new AccessibilityNodeInfo.Action(AccessibilityNodeInfo.ACTION_CLICK); customClickAction.setLabel("Double tap to search"); info.addAction(customClickAction); } }); return true; }
完成后,TalkBack会播报:Search. Button. Double tap to search
中文适配版本
若需要中文播报「搜索。按钮。双击搜索」,只需调整对应文本:
- XML中
app:contentDescription改为"搜索。按钮" - 代码中
customClickAction.setLabel("双击搜索")
内容的提问来源于stack exchange,提问作者Uday
相关产品推荐
相关产品推荐

