没有ActionBar的Android Activity

时间:2014-09-16 08:10:14

标签: java android android-actionbar

我的应用程序中有不同的Activities,并且在所有应用程序中我都不想Action Bar。我找不到如何禁用它。我试图找到一个属性将其应用到main_activity.xml,但到目前为止我没有找到任何东西。有人可以帮帮我吗?

14 个答案:

答案 0 :(得分:78)

哈哈,我刚才也被困在那一点上,所以我很高兴能帮助你解决一个至少对我有用的解决方案:)

您要做的是在values / styles.xml中定义一个新样式,使其看起来像这样

<resources>
    <style name = "AppTheme" parent = "android:Theme.Holo.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name = "NoActionBar" parent = "@android:style/Theme.Holo.Light">
        <item name = "android:windowActionBar">false</item>
        <item name = "android:windowNoTitle">true</item>
    </style>

</resources>

只有NoActionBar风格才有意义。最后你必须在AndroidManifest.xml中设置为应用程序的主题,所以它看起来像这样

<application
    android:allowBackup = "true"
    android:icon = "@drawable/ic_launcher"
    android:label = "@string/app_name"
    android:theme = "@style/NoActionBar"   <!--This is the important line-->
    >
    <activity
    [...]

我希望这有帮助,如果没有,请告诉我。

答案 1 :(得分:66)

有多种方法可以做到这一点。

1)更改Android Manifest中的主题

在Application元素下面,您将找到主题标记。替换它 -

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

如果您使用的是AppCompat,请使用@android:style/Theme.AppCompat.NoActionBar

这将为所有活动设置主题。如果您不需要特定活动中的操作栏,请在活动容器中设置主题,即

<activity android:theme="@android:style/Theme.NoTitleBar" ...>

您也可以在样式中设置android:theme="@android:style/Theme.NoTitleBar"主题,稍后再使用。


2)创建自定义主题

res/values/styles.xml

中添加此内容
<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
     <item name="windowActionBar">false</item>
     <item name="android:windowNoTitle">true</item>
</style>

然后将其设置为您在Manifest中的活动主题:

<activity android:theme="@style/NoActionBar" ... />

3)动态删除操作栏

在设置内容视图之前将此代码放入onCreate方法 -

getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();

如果您使用的是支持库,请使用getSupportActionBar()

答案 2 :(得分:8)

考虑到每个人都在发布隐藏ActionBar的旧方法,这是在AppCompat支持库的样式中实现它的正确方法。如果你还没有,我强烈建议你继续前进。

只需删除ActionBar

即可
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>

如果您正在使用appcompat支持库,这是隐藏ActionBar以使其全屏显示或开始在布局中实现工具栏的最简单且推荐的方法。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Your Toolbar Color-->
    <item name="colorPrimary">@color/primary</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/primary_dark</item>

    <!-- colorAccent is used as the default value for colorControlActivated,
     which is used to tint widgets -->
    <item name="colorAccent">@color/accent</item>

    <!-- You can also set colorControlNormal, colorControlActivated
     colorControlHighlight, and colorSwitchThumbNormal. -->
</style>

然后更改工具栏颜色

<android.support.v7.widget.Toolbar
    android:id=”@+id/my_awesome_toolbar”
    android:layout_height=”wrap_content”
    android:layout_width=”match_parent”
    android:minHeight=”?attr/actionBarSize”
    android:background=”?attr/primary” />

最后注意:您的Activity类应该扩展AppCompatActivity

public class MainActivity extends AppCompatActivity {

<!--Activity Items -->

}

答案 3 :(得分:6)

如果您正在使用AppCompat,请按以下方式在AndroidManifest.xml中声明您的活动:

<activity
    android:name=".SomeActivity"
    ...
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

答案 4 :(得分:4)

您也可以将ActionBarActivity的继承更改为以here编写的活动。

更新

一个好的解决方案是here

@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide();
    setContentView(R.layout.activity_main);
}

答案 5 :(得分:4)

打开清单,然后将属性theme =“ @ style / Theme.AppCompat.Light.NoActionBar”添加到您想要的没有动作栏的活动中:

<application
    ...
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        ...
    </activity>
</application>

答案 6 :(得分:2)

我会尝试尽可能简单地展示它:

在ANDROID MAINIFEST文件中声明全屏幕活动:

<activity
            android:name=".GameActivity"
            android:label="@string/title_activity_game"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

现在在Android工作室(如果您使用它)在设计器中打开您的Activity xml文件(在我的示例中为activity_game.xml)并选择主题(在带有小圆圈的设计器点击按钮中的手机上方)然后选择主要的主要主题左侧,然后是NoTitleBar.Fullscreen。

希望它会有所帮助!

答案 7 :(得分:2)

如果您希望大多数活动都有一个操作栏,您可能会从默认主题继承您的基本主题(这是默认情况下Android Studio自动生成的):

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

然后为无栏活动添加一个特殊主题:

<style name="AppTheme.NoTitle" parent="AppTheme">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="actionBarTheme">@null</item>
    </style>

对我来说,将 actionBarTheme 设置为 @null 是解决方案。

最后在清单文件中设置活动:

<activity ... android:theme="@style/AppTheme.NoTitle" ... >

答案 8 :(得分:1)

您进入res / value / style.xml的默认样式,例如

  <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
  </style>

还有下面的内容,就像您的活动代码一样,

android:theme="@style/AppTheme.NoActionBar"

答案 9 :(得分:0)

请在styles.xml中找到默认主题

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

并以此方式更改父级

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

答案 10 :(得分:0)

将此行放在Activity的{​​{1}}中:

Manifest

并确保您没有在布局中放置<activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> ... </activity>

Toolbar

答案 11 :(得分:0)

android:theme="@style/Theme.MaterialComponents.Light.NoActionBar"

使用这个主题对我有用

答案 12 :(得分:-1)

使用任何名称创建一个新样式,在我的例子中为“Theme.Alert.NoActionBar”

<style name="Theme.Alert.NoActionBar" parent="Theme.AppCompat.Dialog">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

将其父级设置为“Theme.AppCompat.Dialog”,如上面的代码

打开AndoridManifest.xml并自定义要显示为此警告对话框的活动

    <activity
        android:excludeFromRecents="true"
        android:theme="@style/Theme.Alert.NoActionBar"
        android:name=".activities.UserLoginActivity" />

在我的应用程序中,我希望将我的用户登录活动显示为警报对话框,这些是我使用的代码。希望这对你有用!!!

答案 13 :(得分:-1)

非常简单,只需转到您的styles.xml,将父主题更改为 Theme.AppCompat.Light.NoActionBarTheme.AppCompat.NoActionbar,您就完成了..:)