我想为我的一些活动隐藏标题栏。问题是,我应用了一个风格,我所有的活动,因此我不能简单地设置主题@android:style/ theme . notitlebar。

使用NoTitleBar主题作为我的样式的父主题将从我的所有活动中删除标题栏。

我可以在某个地方设置无标题样式的项目吗?


当前回答

或者如果你想隐藏/显示标题栏在任何点:

private void toggleFullscreen(boolean fullscreen)
{
    WindowManager.LayoutParams attrs = getWindow().getAttributes();
    if (fullscreen)
    {
        attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    else
    {
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    getWindow().setAttributes(attrs);
}

其他回答

我不喜欢this.requestWindowFeature(Window.FEATURE_NO_TITLE);因为标题栏会短暂出现,然后消失。

我也不喜欢android:theme="@android:style/ theme。NoTitleBar”,因为我失去了新设备用户已经习惯的3.0+ Holo的所有变化。所以我想到了这个解。

在res/values文件夹中创建一个名为styles.xml的文件(如果它不存在的话)。在该文件中放置以下代码:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>
</resources>

接下来用另一个styles.xml文件创建res/values-v11(同样,这个文件可能已经存在)。在该文件中放置以下代码:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style>
</resources>

如果你的目标是4.0以上,创建一个res/values-v14文件夹和另一个styles.xml文件(是的,它可能已经在那里了)。在该文件中放置以下代码:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style>
</resources>

最后,创建好所有这些文件后,打开androidmanifest .xml文件,添加代码:

android:theme="@style/Theme.NoTitle"

如果想要应用到整个应用程序,则添加到不需要标题的活动的活动标记或应用程序标记。

现在您的用户将获得与他们的设备版本相关联的主题和您想要的屏幕布局。

附注:将值更改为android:theme="@style/ theme。“全屏”也会有同样的效果,还会删除通知栏。

正确的答案可能是不扩展ActionbarActivity,而只是扩展Activity


如果你仍然使用动作栏活动 这似乎起作用了:

@Override
protected void onCreate(Bundle savedInstanceState) {          
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide(); //<< this
    setContentView(R.layout.activity_main);
}

这似乎也管用:

styles.xml:

   <style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

我可以像斯科特·比格斯写的那样。这种方法很有效。除了没有主题。我的意思是设置菜单的背景是透明的:

只改变

public class MainActivity extends ActionBarActivity {

到Activity或FragmentActivity

public class MainActivity extends Activity  {

然而,我可以让它看起来足够好使用材料设计,而不是删除 actionbar: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53

设置应用程序图标 设置操作栏的颜色以匹配设计。 将图标设置为设置菜单 添加更多图标(顶部按钮)

它是通过实例的材料设计兼容动作栏样式。

我发现了发生这种错误的两个原因。

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

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

super.onCreate(savedInstanceState);

两个。在标题栏中有Back/Up按钮,这意味着当前活动是另一个活动的分层子活动,在这种情况下,您可能想要注释掉或从onCreate方法中删除这行代码。

getActionBar().setDisplayHomeAsUpEnabled(true);

如果你做用户YaW和Doug Paul说的,那么你必须记住在调用setContentView之前必须设置窗口特性。如果不是,您将得到一个异常。

为你使用的主题添加这两个:

    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>