android 无障碍:TabLayout的反馈

sf6xfgos  于 2023-03-11  发布在  Android
关注(0)|答案(1)|浏览(183)

设想

我正在创建一个具有底部导航的应用程序。对于1个底部导航项,我有一个包含ViewPagerTabLayout的片段
假设我有3个底部导航项A、B和C
对于C,我们有片段FragmentC,并且在片段FragmentC中也有3个标签项X、Y和Z。
默认情况下,对讲读取任何标签(X、Y或Z)时,显示“X标签,1/3”

要求

我希望选项卡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 1/3”
有什么方法可以让它读作“X in C,tab 1 of 3”吗?

pqwbnv8z

pqwbnv8z1#

我试图做一些类似的事情,但经过大量的变化,下面的作品为我。
由于某种原因,选项卡的文本被附加到内容描述中。我试图跟踪它发生的时间,但我找不到。我只发现如果没有添加contentDescription,我们设置了它的文本。文本会自动添加为contentDescription。参考
我现在的代码是这样的

val tab = tabLayout.newTab()
tab.text = "TITLE"
tab.tag = SOMETHING
....
....
tab.contentDescription = "My content description"

我将此代码更新为以下代码

val tab = tabLayout.newTab()
tab.contentDescription = "My content description"
tab.tag = SOMETHING
....
....
tab.text = "My title"

基本上就是改变设置的顺序。最后一步是设置标签的文本。

相关问题