辅助功能:TabLayout 的 Talkback

时间:2021-06-10 08:29:21

标签: android android-viewpager accessibility android-tablayout android-accessibility

场景

我正在创建一个具有底部导航的应用程序。对于 1 个底部导航项,我有一个带有 ViewPagerTabLayout

的片段

假设我有 3 个底部导航项 A、B 和 C

对于 C,我们有片段 FragmentC。而在 FragmentC 中,又有 3 个 TabItem、X、Y 和 Z。

在默认实现中,当对讲读取任何选项卡(X,Y 或 Z)时,它会显示“X 选项卡,3 个中的 1 个”

要求

我希望标签 X、Y 和 Z 的读法不同

“C 中的 X,第 1 个标签,共 3 个”

代码

这是我做的

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        viewPager.adapter?.let { adapter ->
            for (i in 0..adapter.count) {
                tabs.getTabAt(i)
                    ?.let {
                        it.contentDescription = setAccessibilityForTabs(i, adapter.count)
                    }
            }
        }
    }

    private fun setAccessibilityForTabs(pos: Int, size: Int) = when (pos) {
        0 -> "X in C, tab 1 of 3"
        1 -> "Y in X, tab 2 of 3"
        else -> "Z in X, tab 3 of 3"
    }

在此之后,对讲将其读作 “C 中的 X,第 1 个标签,共 3 个,标签 X 1 个,共 3 个”

所以我把上面的方法改成

    private fun setAccessibilityForTabs(pos: Int, size: Int) = when (pos) {
        0 -> "X in C"
        1 -> "Y in X"
        else -> "Z in X"
    }

现在,结果是 “C 中的 X,第 X 个选项卡,共 3 个”

有什么办法可以让我把它读成“X in C,tab 1 of 3”?

0 个答案:

没有答案
相关问题