我正在使用TabHost来渲染一些标签。在XML定义中,一切都设置为〜通常,RelativeLayout是TabHost的FrameLayout的唯一子节点。
奇怪的是,相对布局总是加载为View.GONE。在XML文件中设置RelativeLayout的visibiltiy不会改变这一点。在onCreate期间调用.setVisibility手动使RelativeLayout可见,但感觉不对。在选项卡之间切换也会使RelativeLayout再次可见。
我错过了一些基本的东西吗?将标签手动指定为FrameLayout的XML子项是否正常?
答案 0 :(得分:6)
我最终花了一些时间阅读TabHost.java并发现了正在发生的事情。
TabHost.java(天真的IMO;))假设不同的标签被附加到不同的内容视图。
每次将内容视图添加到TabSpec时,视图的可见性都将设置为GONE。
每次将TabSpec添加到TabHost时,TabHost都会切换到标签0.
每当调用setCurrentTab时,当且仅当新选择的选项卡不是当前选项卡时,该选项卡的视图的可见性才设置为可见。
为同一视图添加一堆标签时:
所以这是因为对多个标签的内容使用相同的视图。
所以,要修复此调用: tabHost.getCurrentView()。setVisibility(View.VISIBLE); ...添加所有标签后