我正在为应用实施“Read Aloud
”或“Talkback
”。一切都在使用contentDescription
文字,但是通过选项菜单,我发现与contentDescription
无关,我希望系统读取"Menu "+ item's name
。
EX:我的菜单有两项:“创建新文件夹”和“删除当前文件夹”,目前,当我关注菜单项时(支持轨迹球和蓝牙)键),系统可以准确地说出菜单的文字。但我希望它更像“ 1:菜单创建新文件夹 ”和“ 2:菜单删除当前文件夹 ”。
那么,我该如何更改阅读文本?当蓝牙键盘按下menu item
键时,如何获得专注的UP/DOWN
?
答案 0 :(得分:11)
根据我的调查,在Android内部源代码类ActionMenuItemView.java
方法setTitle(CharSequence title)
中,源代码也会设置setContentDescription(title)
,因此Android会将您的MenuItem文本作为默认值。我不知道为什么核心在这种情况下如此不灵活。
<强>更新强>
似乎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);
}