如何在使用操作栏时隐藏标题栏?

19
我正在使用ActionBarSherlock,尝试隐藏应用程序的标题栏,但每当我这样做时,访问ActionBar时会出现NullPointerException异常。 如何删除/隐藏标题栏? 请注意,我不是指操作栏的标题。 我指的是操作栏上方的标题栏。 我在Android 2.3设备上运行我的应用程序。
下面是我的代码:(我的类扩展了SherlockFragmentActivity。)
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_Sherlock);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
ActionBar actionbar = getSupportActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //I get the NullPointerException here.

//...

setContentView(R.layout.tab_navigation);

https://dev59.com/GWkw5IYBdhLWcg3w6ewb - Sush
10个回答

32

我通过添加以下代码来隐藏标题栏:

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(false);
希望这有所帮助 :)

方法 getSupportActionBar() 在类型中未定义 - Azahar
1
@Azahar 如果你没有使用支持库,应该使用 getActionBar()。 - Khaledvic

19

要隐藏所有标题栏,只保留操作栏,请使用以下代码:

final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);

这对我起作用了


如果您正在使用菜单布局,请在menu.xml中将它们设置为android:showAsAction="never"。 - panchicore

8

我正在寻找这个问题的答案。找到了一个解决方案。

actionBar = getActionBar();
actionBar.hide();

上面的代码片段将删除标签标题和滑块。希望可以帮助你。

4
我在这个问题上找到了解决方案。如果您在AndroidManifest.xml中声明主题,标题栏将自动消失。虽然我不知道为什么只有在AndroidManifest.xml中声明才有效,而不是在代码中声明。
NullPointerException的原因是,在较高版本(ICS及更高版本)中,ActionBarTitleBar是同义词。通过使用兼容库和ActionBarSherlock,隐藏TitleBar也意味着隐藏ActionBar
以下是如何设置应用程序以使用Sherlock的主题:(您应该将其添加到应用程序标记中)
android:theme="@style/Theme.Sherlock"

如果您知道如何在代码中隐藏标题栏,请随时修改我的答案,包括您的答案。如果有人能解释为什么它只适用于清单文件而不适用于代码,那就太好了。 :)

代码与清单问题的解释在我的答案中。 - Bartek

1

0
如果您正在使用Xamarin,您可以使用以下代码。
ActionBar.Hide();

0
Arci的回答并不完全正确。如果您阅读主题文档,您会发现:
引用: 主题应该在整个应用程序或每个活动基础上在您的清单中定义。您还可以在每个活动的代码中定义主题,在调用super.onCreate(Bundle)之前。这必须针对每个扩展自“Sherlock”活动基类之一并打算使用操作栏的活动进行操作。
换句话说,您只需要交换原始代码的前两行即可。
setTheme(R.style.Theme_Sherlock);
super.onCreate(savedInstanceState);
...

0

我遇到了相同的问题。这些答案都对我没用,Actionbar 加载前我仍然能看到标题栏。

我不得不在清单文件中设置 Activity 的主题为 NoActionBar:

android:theme="@style/Theme.Sherlock.NoActionBar"

然后在setContentView()之前,将主题重新设置回我的Activity中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setTheme(R.style.Theme_Custom);
    setContentView(R.layout.activity_home);
}

这仍然加载了我的自定义主题,当活动加载时,我不再看到标题栏的一瞥


-2
    <activity android:name=".xxxxxActivity"
              android:theme="@style/Theme.Sherlock.NoActionBar"/>

-2

试一下:

setTheme(R.style.Theme_Sherlock_NoActionBar);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接