【问题标题】:How To Remove Tabwidget oF A TabHost Temporarily?如何临时删除 TabHost 的 Tabwidget?
【发布时间】:2011-11-22 08:51:04
【问题描述】:

我正在开发一个使用 TabHost 的应用程序。在我的 TabHost 中,有四个选项卡。每个选项卡都有自己的 ActivityGroup。现在,我想要的是,在一个选项卡下我的 ActivityGroup 中的一个 Acitivty 中,我想暂时删除 Tabwidget,以便 frameLayout 将在设备的整个屏幕上可见。然后,当活动切换到另一个活动时,Tabwidget 将重新出现在屏幕上。所以第一个问题是,我可以这样做吗?如果那样,我该怎么做?如果不能,那么是否可以在Tabwidget的选项卡下在正常活动和ActivityGroup内的活动之间切换?

【问题讨论】:

    标签: android android-activity android-tabhost tabwidget activitygroup


    【解决方案1】:

    StartActivity() 也可以在 ActivityGroup 内部工作。 因此活动将在整个屏幕中开始,finish(); 将发送回ActivityGroup()

    【讨论】:

      【解决方案2】:

      对于底部的标签:

      public void hideTab()
      {
          TabWidget tabwidget=getTabWidget();
          RelativeLayout.LayoutParams params=(RelativeLayout.LayoutParams)tabwidget.getLayoutParams();
          params.setMargins(0, 0, 0, -100);
      
      }
      public void showTab()
      {
          TabWidget tabwidget=getTabWidget();
          RelativeLayout.LayoutParams params=(RelativeLayout.LayoutParams)tabwidget.getLayoutParams();
          params.setMargins(0, 0, 0, -3);
      
      }
      

      【讨论】:

        【解决方案3】:

        由于TabWigetView 的子类,您应该能够使用setVisibility() 隐藏/重新显示它。

        您需要对 TabWidget 的引用 - 该引用需要在哪里,取决于将处理隐藏/显示的类。在下面的示例中,我假设您将功能放在 TabActivity 中 - 因此我们添加了两个方法和对 TabWidget 的引用:

        TabWidget myTabWidget; //You will need to find it in the layout in onCreate using findViewById( R.id.idOfYourTabWidget ).
        
        public void hideTabs() {
          myTabWidget.setVisibility( View.GONE );
        }
        
        public void showTabs() {
          myTabWidget.setVisibility( View.VISIBLE );
        }
        

        然后在需要隐藏标签的Activity 中,您需要执行以下操作:

        Activity activity = getParent(); //Might be getParent().getParent(); if you're inside an ActivityGroup.
        if( activity instanceof MyTabActivity ) //Just to make sure.
          ((MyTabActivity) activity).hideTabs();
        

        要重新显示选项卡,同样的事情,但改为调用 ((MyTabActivity) activity).showTabs();

        【讨论】:

        • 好吧,在问这个问题之前我已经做过类似的事情了。但问题是,虽然 Tabwidget 变得不可见,但 Tabwidget 的空间仍然是空白的,FrameLayout 并没有覆盖整个屏幕。我想要的是,当 Tabwidget 将被临时删除时,FrameLayout 将显示在整个屏幕上。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        相关资源
        最近更新 更多