选择另一个选项卡后,先前的选项卡选择

时间:2018-05-14 17:50:48

标签: android material-design material-components

我想要自定义def test_config_has_foo_set_to_bar(json_config): assert json_config['foo'] == 'bar' ,如下所示:

  • 如果未选择标签项,则仅显示图标
  • 如果选择了标签项,则应显示图标和文字

我已经实现了TabLayout,并且在未选中该选项卡时将文本设置为OnTabSelectedListener。当我运行“取消选中”标签上的文字时,该标签会被删除,但标签仍保持活动状态,如下图所示:image

代码:

null

XML

tabs.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener{
            override fun onTabReselected(p0: TabLayout.Tab?) {

            }

            override fun onTabUnselected(tab: TabLayout.Tab?) {
                // If I remove this the problem is resolved.
                tab?.text = null
            }

            override fun onTabSelected(tab: TabLayout.Tab?) {
               tab?.text = "Selected"
            }

        })

我已尽力找到解决办法,但无济于事。

2 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。我在updateTabs()中致电onTabSelected()。这是方法:

private fun updateTabs(){
        for (i in 0 until tabs.tabCount){
            tabs.getTabAt(i)?.let {
                it.icon = ActivityCompat.getDrawable(this,tabIcons[i])
                if( it.isSelected){
                    it.text = tabTitles[i]
                }else{
                    it.text = null
                }
            }
        }
    }

答案 1 :(得分:0)

这已在内部修复,很快就会推出新版本的材料设计库。

问题的要点是在内部,在调用onTabUnselected()之前不会更新选定的选项卡。然后,通过为该方法中的选项卡设置文本,它也会错误地更新旧的选定选项卡。