设置选项菜单android Talkback的内容描述

时间:2016-04-22 15:51:24

标签: android menuitem optionmenu talkback

我正在为应用实施“Read Aloud”或“Talkback”。一切都在使用contentDescription文字,但是通过选项菜单,我发现与contentDescription无关,我希望系统读取"Menu "+ item's name

EX:我的菜单有两项:“创建新文件夹”和“删除当前文件夹”,目前,当我关注菜单项时(支持轨迹球和蓝牙)键),系统可以准确地说出菜单的文字。但我希望它更像“ 1:菜单创建新文件夹 ”和“ 2:菜单删除当前文件夹 ”。

那么,我该如何更改阅读文本?当蓝牙键盘按下menu item键时,如何获得专注的UP/DOWN

5 个答案:

答案 0 :(得分:11)

根据我的调查,在Android内部源代码类ActionMenuItemView.java方法setTitle(CharSequence title)中,源代码也会设置setContentDescription(title),因此Android会将您的MenuItem文本作为默认值。我不知道为什么核心在这种情况下如此不灵活。

<强>更新

感谢@sofakingforever answer

似乎Google刚刚将setContentDescription(CharSequence contentDescription)方法添加到API 26(MenuItem)上的Android O类。

<强>更新 感谢您的新@tim.paetz answer。 对于使用setContentDescription库的菜单项,现在支持所有版本android support v4

答案 1 :(得分:8)

v4支持库中的MenuItemCompat有一个

android.support.v4.view.MenuItemCompat.setContentDescription(MenuItem menuItem, CharSequence contentDescription) 

在Oreo前设备上向后兼容的方法。

答案 2 :(得分:3)

似乎他们刚刚将setContentDescription(CharSequence contentDescription)方法添加到 API 26 (Android O)上的MenuItem课程

答案 3 :(得分:1)

this回答发布AndroidX

androidx.core.view.MenuItemCompat.setContentDescription(menuItem,  contentDescription)

答案 4 :(得分:0)

完整样本:

@Override
public void onCreateOptionsMenu(@NonNull Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.client_menu_close, menu);
    super.onCreateOptionsMenu(menu, inflater);

    MenuItem closeMenu = menu.findItem(R.id.client_menu_close_action);
    androidx.core.view.MenuItemCompat.setContentDescription(closeMenu, R.string.str_accessibility_client_screen_close);
}