设想
我正在创建一个具有底部导航的应用程序。对于1个底部导航项,我有一个包含ViewPager
和TabLayout
的片段
假设我有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”吗?
1条答案
按热度按时间pqwbnv8z1#
我试图做一些类似的事情,但经过大量的变化,下面的作品为我。
由于某种原因,选项卡的文本被附加到内容描述中。我试图跟踪它发生的时间,但我找不到。我只发现如果没有添加contentDescription,我们设置了它的文本。文本会自动添加为contentDescription。参考
我现在的代码是这样的
我将此代码更新为以下代码
基本上就是改变设置的顺序。最后一步是设置标签的文本。