3

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

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

在 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 且版本极不可能更改的硬件设备。

有什么想法吗?

干杯

4

2 回答 2

4

据我所知,您想删除该视图对吗?

在此处输入图像描述

问题在于它是您的 ActionBar。我猜你想使用选项卡,但没有像许多正在这样做的应用程序那样的 ActionBar。为了实现这个用途:

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

但是不要忘记一些事情,如果你想实现这一点,你不应该在你的 Fragment / Activity 中膨胀任何菜单:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //getSupportMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}
于 2013-04-10T08:36:07.740 回答
2

你应该在这里看到@ColorWP 的答案

窗口标志已经设置在 super.onCreate(savedInstanceState); 在这种情况下,您可能需要使用以下命令顺序:

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

super.onCreate(savedInstanceState);
于 2013-04-10T08:37:24.053 回答