Android - 如何摆脱ActionBar上方的栏

时间:2013-04-10 08:25:12

标签: android android-actionbar

编辑:Android-Developers在下面的回答解释了解决方案

我的问题是还有另一个栏,不确定它的名字是什么 - TitleBar? (带有菜单按钮和白色方形徽标的栏)在我的ActionBar上方。我理想的是将ActionBar与该栏合并,或者如果不可能,在图标和菜单按钮的选项卡中完全实现我自己的栏。我尝试了几件事(见下图),以及我如何添加标签的粗略代码如下所示。

Showing the unwanted standard bar above the ActionBar

向ActionBar代码添加标签:

    actionBar = getActionBar();  // Get reference to ActionBar

    // Add some navigation tabs...

    // 1. Enable ActionBar navigation tabs
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    actionBar.setDisplayShowTitleEnabled(false);

    // 2. Add the tabs
    Tab programTab = actionBar.newTab();
    Tab settingsTab = actionBar.newTab();
    Tab historyTab = actionBar.newTab();

    programTab.setText("Program")
      .setTabListener(new TabListener<Fragment_Program>(
              this, "Program", Fragment_Program.class));

    settingsTab.setText("Settings")
             .setTabListener(new TabListener<Fragment_Settings>(
                      this, "Settings", Fragment_Settings.class));

    historyTab.setText("History")
    .setTabListener(new TabListener<Fragment_History>(
              this, "History", Fragment_History.class));

    actionBar.addTab(programTab);
    actionBar.addTab(settingsTab);
    actionBar.addTab(historyTab);

我的印象是getActionBar()引用了位于屏幕截图中位于ActionBar上方的现有栏。这将是理想的。

当前的应用主题是android:theme="@android:style/Theme.Holo.Light.DarkActionBar"

无论如何,我尝试了以下内容:

  • 各种明显变化,包括各种.NoTitleBar组合
  • requestWindowFeature(Window.FEATURE_NO_TITLE);之后super.onCreate() 之前
  • setContentView()

我使用标准ActionBar的原因是硬件设备至少运行4.0并且版本不太可能改变。

有什么想法吗?

干杯

2 个答案:

答案 0 :(得分:4)

据我所知你想删除该视图吗?

enter image description here

问题在于它是你的ActionBar。我想你想要使用Tabs,但没有ActionBar就像许多正在这样做的应用程序。为实现这一目标:

bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayShowTitleEnabled(false);
bar.setDisplayShowHomeEnabled(false);

但不要忘记一些事情,如果你想实现这一点,你不应该夸大片段/活动中的任何菜单:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //getSupportMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

答案 1 :(得分:1)

您应该看到@ColorWP回答here

  

已经在super.onCreate(savedInstanceState)中设置了Window标志;在这种情况下,您可能希望使用以下命令顺序:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);      

super.onCreate(savedInstanceState);