Android 無障礙朗讀模式
Android Dialog 的無障礙朗讀遇到神奇的坑
最近公司的產品要支援無障礙的朗讀模式 (Talk Back),在普通的畫面上製作都還算 OK,到遇到 Dialog 跟 Bottom Sheet 的操作邏輯下,就會有很神奇的朗讀順序。
不知道為什麼在 Dialog 跟 Bottom Sheet 開啟的情況下,整體的朗讀一定會先去唸整個 View 的左上角找到的第一個,找了超久的原因才發現原來 Dialog 的 decorView
也會有無障礙的設定。
所以最後我的解決方式就是在 dialog onCreate
階段將 decorView
的無障礙設定清除。
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = super.onCreateDialog(savedInstanceState)
dialog.window?.decorView?.importantForAccessibility =
View.IMPORTANT_FOR_ACCESSIBILITY_NO
return dialog
}
onCreateDialog 階段清除 decorView 的無障礙設定
但設定這個後,開啟頁面時第一次 focus 狀態會變慢一點。