【问题标题】:Show only certain tabs in android TabHost?仅在 android TabHost 中显示某些选项卡?
【发布时间】:2011-05-19 22:04:33
【问题描述】:

我有一个 TabHost,在我的 main.xml 布局文件中定义了 4 个选项卡。我正在尝试通过仅将指定的选项卡添加到 TabHost(即 1、2 和 4,或 1 和 3,或 ...)来设置选项卡。

如果我只添加所有 4 个选项卡,一切看起来都很好,但如果我忽略了 4 个选项卡中的任何一个,我显示的选项卡内部就没有显示任何内容。

有谁知道这可能是什么问题?

    tabs = (TabHost) findViewById(R.id.tabhost);
    tabs.setup();

    TabSpec mainSpec = tabs.newTabSpec("Main Tab");
    mainSpec.setIndicator("Main", getResources().getDrawable(R.drawable.tab_main)).setContent(R.id.mainContent);   
    tabs.addTab(mainSpec);


    if(param1)
    {
        TabSpec msgSpec = tabs.newTabSpec("Tab 2"); 
        msgSpec.setIndicator("Messages", getResources().getDrawable(R.drawable.tab_message)).setContent(R.id.messageContent);
        tabs.addTab(msgSpec);
    }
    if(param2)
    {
        TabSpec tpSpec = tabs.newTabSpec("Tab 3"); 
        tpSpec.setIndicator("Timepoints", getResources().getDrawable(R.drawable.tab_message)).setContent(R.id.timepointContent);
        tabs.addTab(tpSpec);
    }
    if(param3)
    {
        TabSpec passSpec = tabs.newTabSpec("Tab 4"); 
        passSpec.setIndicator("Passengers", getResources().getDrawable(R.drawable.tab_message)).setContent(R.id.passengerContent);
        tabs.addTab(passSpec);
    }

【问题讨论】:

  • 理论上我看不出你的代码有什么问题。一定有其他原因导致了这种情况。
  • 嗯好吧...我的直觉是它与在 xml 文件中定义但从未添加到 TabHost 的布局有关?
  • 啊,好的。我想你可能走在正确的轨道上。尝试在它们自己的 xml 文件中定义每个选项卡“内容”的布局。为 TabHost 创建一个“主”选项卡布局 xml,但将内容视图保留为单独的布局。

标签: android layout android-tabhost


【解决方案1】:

以编程方式设置选项卡可见性并保留内容:

tabs.getTabWidget().getChildAt(2).setVisibility(4);

其中“2”是要隐藏的选项卡的 id,“4”是不可见的常量。

【讨论】:

  • 谢谢你帮助我。设置 setVisibility(4) 给了我一个黑洞。如何使标签中的活动填满屏幕?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多