如何在Android中隐藏状态栏

时间:2011-03-25 10:43:02

标签: android android-theme android-statusbar

我提到了link。这样,如果用户点击EditText(对于ex To :),那么键盘将会弹出,同时用户可以滚动查看所有剩余的视图(例如:撰写,主题,发送按钮)那个屏幕。同样在我的应用程序中,我有一个活动,我有一些小部件或视图。     假设用户点击我的Activity中的Edittext然后键盘弹出,我可以滚动查看剩余的视图。但是如果我在清单中给出这个属性android:theme="@android:style/Theme.NoTitleBar.Fullscreen"我无法滚动查看剩余的视图但是如果在清单中给出这样的属性android:theme="@android:style/Theme.NoTitleBar"我可以滚动查看剩余视图但是有状态栏在那个屏幕上,这里我想要全屏,即使弹出键盘,我也可以滚动查看其余视图..?我必须为此做些什么改变..?

29 个答案:

答案 0 :(得分:146)

在您的活动

中写下此内容
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

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

点击此处查看文档:{​​{3}}

,您的应用将全屏显示。没有状态栏,没有标题栏。 :)

答案 1 :(得分:18)

 if (Build.VERSION.SDK_INT < 16) {
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 } else {
     View decorView = getWindow().getDecorView();
      int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
      decorView.setSystemUiVisibility(uiOptions);
      ActionBar actionBar = getActionBar();
      actionBar.hide();
 }

答案 2 :(得分:18)

使用主题"Theme.NoTitleBar.Fullscreen"并尝试为"android:windowSoftInputMode=adjustResize"中的活动设置AndroidManifest.xml.您可以找到详细信息here

答案 3 :(得分:11)

如果你需要在一个活动中使用它,你必须在setContentView之前输入onCreate:

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

setContentView(R.layout.your_screen);

答案 4 :(得分:8)

将此添加到您的Activity类

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(
                        WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    // some your code
}

答案 5 :(得分:8)

将此用于Activity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

答案 6 :(得分:7)

如果要隐藏状态栏,请在onCreate(对于Activity)和onCreateView / onViewCreated(对于Fragment)中进行操作

align

并且不要忘记在退出活动时清除该标志,否则访问此活动后您将在整个应用程序中拥有全屏显示。 要清除此内容,请在onDestroy(用于Activity)或onDestroyView(用于片段)中

64-bit unsigned relocation zero-extended from 32 bits [-w+zext-reloc]

答案 7 :(得分:7)

manifest.xml文件中更改应用程序的主题。

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

答案 8 :(得分:6)

void hideStatusBar() {
        if (Build.VERSION.SDK_INT < 16) {
           getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

您可以使用此方法隐藏状态栏。这也是隐藏操作栏的重要因素。在这种情况下,你可以 getSupportActionBar()。hide()如果你已经从Appcompat等支持lib扩展了活动,或者你可以简单地调用 getActionBar()。hide()经过上述方法。感谢

答案 9 :(得分:5)

使用此代码:

requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.youractivityxmlname);

答案 10 :(得分:3)

此代码隐藏状态栏。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

隐藏操作栏写下这一行: -

requestWindowFeature(Window.FEATURE_NO_TITLE);

这两行可以统一写入以隐藏操作栏和状态栏。所有这些行必须在setContentView方法中onCreate方法调用之前编写。

答案 11 :(得分:3)

您可以使用styles.xml隐藏

<resources>

<!-- 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="HiddenTitleTheme" parent="AppTheme">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

像这样android:theme="@style/HiddenTitleTheme"

在清单中称呼它

答案 12 :(得分:2)

在AndroidManifest.xml中 - &gt;在您要使用的活动内,添加以下内容:

android:theme="@style/Theme.AppCompat.Light.NoActionBar"
//this is for hiding action bar

并在MainActivity.java中 - &gt;在onCreate()方法中,添加以下内容:

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//this is for hiding status bar

答案 13 :(得分:1)

这是关于在Android 4.0及更低版本以及Android 4.1及更高版本上隐藏状态栏的官方文档

请看一下:

https://developer.android.com/training/system-ui/status.html

答案 14 :(得分:1)

这对我来说是最好的解决方案,只需在你的 theme.xml 中写下这一行

<style name="MyApp" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
...
</style>

答案 15 :(得分:1)

由于Android R不推荐使用FLAG_FULLSCREEN,因此您可以使用以下代码隐藏状态栏。

 @Suppress("DEPRECATION")
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {

           window.insetsController?.hide(WindowInsets.Type.statusBars())
    } else {

           window.setFlags(
                    WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN
            )
        }

答案 16 :(得分:1)

使用此代码可在您的应用中隐藏状态栏,并且易于使用

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

答案 17 :(得分:1)

我们无法阻止(4.4+)kitkat或更高版本设备以全屏模式显示状态,因此请尝试黑客阻止状态栏扩展。

解决方案非常大,所以这里是SO的链接:

StackOverflow : Hide status bar in android 4.4+ or kitkat with Fullscreen

答案 18 :(得分:0)

//我们可以在 Android 4.1(API 级别 16)及更高版本中使用 setSystemUiVisibility() 隐藏状态栏

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN

//根据谷歌文档,我们不应该显示操作栏,如果 状态栏是隐藏的,所以如果需要也隐藏它。

actionBar?.hide()

答案 19 :(得分:0)

在 Style.xml 文件中添加或替换

<item name="android:statusBarColor">@android:color/transparent</item>

答案 20 :(得分:0)

包括android api 30,这对我有用

if (Build.VERSION.SDK_INT < 16) {
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
    } else if (Build.VERSION.SDK_INT < 30) {
        window.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
        actionBar?.hide()
    } else {
        window.decorView.windowInsetsController?.hide(WindowInsets.Type.statusBars())
    }

答案 21 :(得分:0)

如果您引用Google Documents,则可以在android 4.1及更高版本中使用此方法,请在setContentView()之前调用此方法

public void hideStatusBar() {
    View view = getWindow().getDecorView();
    int uiOption = View.SYSTEM_UI_FLAG_FULLSCREEN;
    view.setSystemUiVisibility(uiOption);
    ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
}

答案 22 :(得分:0)

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

    setTheme(R.style.Theme_AppCompat_Light_NoActionBar);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
    , WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity__splash_screen);
}

答案 23 :(得分:0)

您可以通过使用 xml 将状态栏的颜色设置为透明来隐藏状态栏。将 statusBarColor 项目添加到您的活动主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

答案 24 :(得分:0)

在res下 - &gt;值 - &gt; styles.xml

样式正文标记粘贴

<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>

答案 25 :(得分:0)

Manifest

中使用
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"

答案 26 :(得分:0)

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // If the Android version is lower than Jellybean, use this call to hide
    // the status bar.
    if (Build.VERSION.SDK_INT < 16) {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    } else {
       View decorView = getWindow().getDecorView();
       // Hide the status bar.
       int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
       decorView.setSystemUiVisibility(uiOptions);
       // Remember that you should never show the action bar if the
       // status bar is hidden, so hide that too if necessary.
       ActionBar actionBar = getActionBar();
       actionBar.hide();
    }

    setContentView(R.layout.activity_main);

}
...
}

答案 27 :(得分:0)

此解决方案适用于我:)

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= 19) {
           getWindow().setFlags(AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT, AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT);
           getWindow().getDecorView().setSystemUiVisibility(3328);
    }else{
           requestWindowFeature(Window.FEATURE_NO_TITLE);
           this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    DataBindingUtil.setContentView(this, R.layout.activity_hse_video_details);

答案 28 :(得分:-1)

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