【问题标题】:Android - How to get rid of the bar above the ActionBarAndroid - 如何摆脱ActionBar上方的栏
【发布时间】:2013-04-10 08:25:12
【问题描述】:

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

我的问题是还有一个栏,不确定它的名称是什么 - TitleBar? (带有菜单按钮和白色方形徽标的栏)在我的 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 且版本极不可能更改的硬件设备。

有什么想法吗?

干杯

【问题讨论】:

  • 另一个是小时数?
  • 不是NotificationBar,菜单按钮和Logo之间的那个
  • 如果需要,您可以在操作栏上添加标签。请参阅 this postthis link。这样做,您可以将 2 个小节“合并”为一个。
  • 这是我使用 ActionBar 的 addTab() 方法的代码,这就是我感到困惑的原因:) 我添加了代码 btw

标签: android android-actionbar


【解决方案1】:

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

问题在于它是您的 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;
}

【讨论】:

  • 是的,这正是我想要做的!嗯,这摆脱了徽标并切换栏,将 ActionBar 留在顶部,该栏仍然带有菜单按钮减去徽标
  • 我现在有一个对 ActionBar 的引用,我可以隐藏它没问题,当我同时使用我的选项卡和上面的栏时,菜单和徽标都会消失。看起来我不想要的上面的栏实际上是 ActionBar 的一部分
  • ActionBar 是带有白色图标和溢出图标的黑色布局。如果您想隐藏它并只显示选项卡,只需检查编辑后的答案。
  • 啊完美!干杯,评论出来做的工作!现在我将创建自己的菜单图标 :) 谢谢
【解决方案2】:

你应该看到@ColorWP 回答here

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

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

super.onCreate(savedInstanceState);

【讨论】:

  • requestWindowFeature(Window.FEATURE_NO_TITLE); 导致NullPointerExceptiongetWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 摆脱了我不想做的顶部的NotificationBar
  • 我刚刚提到了命令的正确顺序,并且我已经测试了“FEATURE_NO_TITLE”并且它有效,我猜“NullPointerException”来自其他一些代码..
  • 我同意,我对 Fragment 还很陌生,所以我确信周围存在一些错误:P 无论如何谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多