2016-04-22 52 views
6

我正在爲應用程序實現「Read Aloud」或「Talkback」。一切正在contentDescription文本,但與選項菜單,我沒有發現任何有關contentDescription,我想系統讀取"Menu "+ item's name設置選項菜單的內容描述android對話

EX:我的菜單有2項:「創建新文件夾」和「刪除當前文件夾」,目前,當我專注的菜單項(支持軌跡球和藍牙鍵),系統能準確地講菜單的文本。但我想它會談更像是「1:菜單創建新文件夾」和「2:菜單刪除當前文件夾」。

那麼,如何更改閱讀文本?當藍牙鍵盤按UP/DOWN鍵時,我怎樣才能得到專注的menu item

+0

當你設置btn.setContentDescription(「Menu:」+「Create blabla」)時會發生什麼;然後btn.requestFocus()? – JSBach

回答

7

正如我的調查,在Android內部源代碼類ActionMenuItemView.java方法setTitle(CharSequence title)中,源代碼也設置爲setContentDescription(title),因此Android會將您的MenuItem的文本讀取爲默認值。我不知道爲什麼核心在這種情況下非常不靈活。

更新時間:

感謝@sofakingforever answer

看來Google剛剛將setContentDescription(CharSequence contentDescription)方法添加到API 26(Android O)上的MenuItem類。

+0

你有沒有想出一個可能的解決方案或想法?我們可以用擴展來覆蓋它嗎?因爲我有,我相信,類似的問題,http://stackoverflow.com/questions/36971528/android-seekbar-talkback-talking-too-much – JSBach

+0

對不起,反饋遲了,但我仍然沒有解決我的問題。 – NamNH

+0

不用擔心。是的,我也沒有。於是製作了一個空的標籤並繼續前進。看起來,Spotify也無法解決它。當我檢查時,他們有類似的問題。 – JSBach

1

似乎他們剛剛添加的setContentDescription(CharSequence contentDescription)方法將MenuItem類上API 26(的Android O)

+0

是的,我看到這個方法現在可以在'Android O Developer Preview'上找到,但沒有經過測試。但是,我希望這會起作用。 :)。 – NamNH

+0

似乎工作得很好。 – sofakingforever

+1

此外,爲菜單的XML添加'app:contentDescription'(而不是'android:contentDescription')似乎適用於我的早期版本。 – sofakingforever

2

MenuItemCompat在V4支持庫具有用於預先向後兼容性

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

方法-Oreo設備。