设置选项菜单android对讲的内容描述
我正在为应用程序实现“设置选项菜单android对讲的内容描述,android,menuitem,optionmenu,talkback,Android,Menuitem,Optionmenu,Talkback,我正在为应用程序实现“大声朗读”或“对讲”。一切都在使用contentDescription文本,但在选项菜单中,我没有发现与contentDescription相关的内容,我希望系统读取“菜单”+项名称 例如:我的菜单有两项:“创建新文件夹”和“删除当前文件夹”,当前,当我聚焦菜单项(支持轨迹球和蓝牙键)时,系统可以准确地说出菜单文本。但我希望它更像“1:菜单创建新文件夹”和“2:菜单删除当前文件夹” 那么,我如何更改已读文本?当蓝牙键盘按向上/向下键时,如何获得聚焦的菜单项?作为我的调查,在
大声朗读
”或“对讲
”。一切都在使用contentDescription
文本,但在选项菜单中,我没有发现与contentDescription
相关的内容,我希望系统读取“菜单”+项名称
例如:我的菜单有两项:“创建新文件夹”和“删除当前文件夹”,当前,当我聚焦菜单项(支持轨迹球和蓝牙键)时,系统可以准确地说出菜单文本。但我希望它更像“1:菜单创建新文件夹”和“2:菜单删除当前文件夹”
那么,我如何更改已读文本?当蓝牙键盘按向上/向下键时,如何获得聚焦的
菜单项
?作为我的调查,在Android内部源代码中,classActionMenuItemView.java
方法setTitle(CharSequence title)
,源代码还设置setContentDescription(title)
,所以Android会默认读取菜单项的文本。我不知道在这种情况下,核心为何如此不灵活
更新:
谢谢你的帮助
Google刚刚在API 26(Android O
)上的MenuItem
类中添加了setContentDescription(CharSequence contentDescription)
方法
更新:
谢谢你的新消息。
看起来所有版本现在都支持使用
android support v4
库的菜单项setContentDescription
。似乎他们刚刚将setContentDescription(CharSequence contentDescription)
方法添加到API 26(android O)上的MenuItem
类中v4支持库中的MenuItemCompat具有
android.support.v4.view.MenuItemCompat.setContentDescription(MenuItem menuItem, CharSequence contentDescription)
在预Oreo设备上向后兼容的方法
对于AndroidX,请参见以下答案:
回答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);
}
设置btn.setContentDescription(“菜单:“+”创建blabla”)时会发生什么;然后是btn.requestFocus()?您是否提出了可能的解决方案或想法?我们可以用扩展覆盖它吗?因为我有,我相信,类似的问题,很抱歉迟了反馈,但我仍然没有解决我的问题。不用担心。是的,我也没有。于是,我做了一个空标签,继续前进。看起来,Spotify也不可能解决这个问题。当我检查时,他们也有类似的问题。是的,我看到这个方法现在可以在Android O开发者预览版上使用,但没有经过测试。但是,我希望这能奏效。另外,在菜单的XML中添加
app:contentDescription
(而不是android:contentDescription
)对我来说似乎适用于早期版本。你能提供一个更好的例子吗?我的android studio无法识别该代码的“查看”部分。也许需要在页面顶部和gradle.app中导入它?此时,您可能应该使用AndroidX而不是V4支持库。请参阅以获取AndroidX支持。您需要在build.gradle文件中包含AndroidX依赖项。