设置选项菜单的内容描述 android Talkback
Setting content description for option menu android Talkback
我正在为应用程序实现“Read Aloud
”或“Talkback
”。一切都在使用 contentDescription
文本,但在选项菜单中,我找不到与 contentDescription
相关的任何内容,我希望系统读取 "Menu "+ item's name
.
EX:我的菜单有 2 个项目:“创建新文件夹”和“删除当前文件夹”,目前,当我关注一个菜单项(支持轨迹球和蓝牙键),系统可以准确地说出菜单的文本。但我希望它更像是“1:菜单创建新文件夹”和“2:菜单删除当前文件夹”。
那么,如何更改已读文本?如何在蓝牙键盘按下 UP/DOWN
键时获得焦点 menu item
?
据我调查,在Android内部源码中,classActionMenuItemView.java
方法setTitle(CharSequence title)
,源码也设置了setContentDescription(title)
,所以Android 将默认读取您的 MenuItem 的文本。我不知道为什么核心在这种情况下如此不灵活。
更新:
感谢。
似乎 Google
刚刚在 API 26 (Android O
).[=21] 上将 setContentDescription(CharSequence contentDescription)
方法添加到 MenuItem
class =]
更新:
感谢新 。
看起来所有版本现在都支持 setContentDescription
使用 android support v4
库的菜单项。
他们似乎刚刚在 API 上将 setContentDescription(CharSequence contentDescription)
方法添加到 MenuItem
class 26 (Android O)
v4 支持库中的 MenuItemCompat 有一个
android.support.v4.view.MenuItemCompat.setContentDescription(MenuItem menuItem, CharSequence contentDescription)
在 Oreo 之前的设备上向后兼容的方法。
对于 AndroidX,请参阅此答案:
回答postAndroidX
androidx.core.view.MenuItemCompat.setContentDescription(menuItem, contentDescription)
完整样本:
@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);
}
我正在为应用程序实现“Read Aloud
”或“Talkback
”。一切都在使用 contentDescription
文本,但在选项菜单中,我找不到与 contentDescription
相关的任何内容,我希望系统读取 "Menu "+ item's name
.
EX:我的菜单有 2 个项目:“创建新文件夹”和“删除当前文件夹”,目前,当我关注一个菜单项(支持轨迹球和蓝牙键),系统可以准确地说出菜单的文本。但我希望它更像是“1:菜单创建新文件夹”和“2:菜单删除当前文件夹”。
那么,如何更改已读文本?如何在蓝牙键盘按下 UP/DOWN
键时获得焦点 menu item
?
据我调查,在Android内部源码中,classActionMenuItemView.java
方法setTitle(CharSequence title)
,源码也设置了setContentDescription(title)
,所以Android 将默认读取您的 MenuItem 的文本。我不知道为什么核心在这种情况下如此不灵活。
更新:
感谢
似乎 Google
刚刚在 API 26 (Android O
).[=21] 上将 setContentDescription(CharSequence contentDescription)
方法添加到 MenuItem
class =]
更新:
感谢新 setContentDescription
使用 android support v4
库的菜单项。
他们似乎刚刚在 API 上将 setContentDescription(CharSequence contentDescription)
方法添加到 MenuItem
class 26 (Android O)
v4 支持库中的 MenuItemCompat 有一个
android.support.v4.view.MenuItemCompat.setContentDescription(MenuItem menuItem, CharSequence contentDescription)
在 Oreo 之前的设备上向后兼容的方法。
对于 AndroidX,请参阅此答案:
androidx.core.view.MenuItemCompat.setContentDescription(menuItem, contentDescription)
完整样本:
@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);
}