gpt4 book ai didi

android - 为什么我的 TabHost 的 FrameLayout 的唯一 child 加载了 visibility = View.GONE?

转载 作者:太空狗 更新时间:2023-10-29 16:24:42 24 4
gpt4 key购买 nike

我正在使用 TabHost 来呈现一些选项卡。在 XML 定义中,一切都已设置好 ~ 通常,RelativeLayout 是 TabHost 的 FrameLayout 的唯一子项。

奇怪的是,相对布局总是加载为 View.GONE。在 XML 文件中设置 RelativeLayout 的可见性不会改变这一点。在 onCreate 期间调用 .setVisibility 以手动使 RelativeLayout 可见有效,但感觉不对。在选项卡之间切换也会使 RelativeLayout 再次可见。

我是否遗漏了一些基本的东西?将选项卡手动指定为 FrameLayout 的 XML 子项是否正常?

最佳答案

我最终花了一些时间阅读 TabHost.java 并发现了正在发生的事情。

  • TabHost.java(IMO 天真 ;))假定不同的选项卡附加到不同的内容 View 。

  • 每次将内容 View 添加到 TabSpec 时, View 的可见性都会设置为“消失”。

  • 每次将 TabSpec 添加到 TabHost 时,TabHost 都会切换到选项卡 0。

  • 每次调用 setCurrentTab 时,当且仅当新选择的选项卡不是当前选项卡时,该选项卡的 View 的可见性才设置为 VISIBLE。

当为同一 View 添加一堆选项卡时:

  • 首先添加 View 并将其可见性设置为 GONE,
  • 然后 TabHost 切换到选项卡 0 并将 View 的可见性设置为 VISIBLE,
  • 然后添加下一个选项卡并将其 View (相同 View !)的 vis 设置为 GONE,
  • 然后 TabHost 切换到选项卡 0,这是一个 ~noop,因为之前选择了选项卡 0,因此 View 不会切换回 VISIBLE。

所以这是由于对多个选项卡的内容使用相同的 View 造成的。

因此,要修复此调用:tabHost.getCurrentView().setVisibility(View.VISIBLE); ...添加所有选项卡后

关于android - 为什么我的 TabHost 的 FrameLayout 的唯一 child 加载了 visibility = View.GONE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com