隐藏Android应用的ActionBar

2023-02-27

ActionBar是在Active内显示的一个工具栏,它可以包含一些常用的信息与操作,如:标题、图标、菜单等。 有时,我们可能会想要隐藏ActionBar,比如在一个全屏的游戏中,ActionBar会占用一部分屏幕空间,影响游戏的体验。本文将介绍隐藏ActionBar的几种方法。

1. 在样式文件中全局隐藏

如果想在整个应用中隐藏ActionBar,包括在所有的Activity和fragment内,你可以使用这种方式。

一般,样式文件名称为styles.xmlthemes.xml,位于res/values/内。你可以修改样式文件的parent~.NoActionBar,例如,将下面代码中的DarkActionBar修改为NoActionBar

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

2. 在特定Activity中隐藏

如果你只想在某个Activity中隐藏ActionBar,你可以在Activity的onCreate方法中添加以下代码:

...
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ...
    // 隐藏ActionBar
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
}

3. 在特定Activity中隐藏,使用Windows Manager

还有一种方式是,通过Windows Manager设置Windows Flag为全屏模式,这种方式可以隐藏ActionBar,也可以隐藏状态栏,但是会导致Activity的布局被拉伸,因为布局的高度会被设置为全屏的高度。需要注意的是,以下代码需要插入到setContentView之前。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    // 隐藏ActionBar
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    ...
    setContentView(R.layout.activity_main);
}

此文就到此结束啦!欢迎大家在评论区留言哦ヾ(^▽^*)))
Ciallo~(∠・ω< )⌒☆​
写文不易,如果你觉得我的文章对你有帮助,欢迎打赏