我也遇到了这个问题,但是当我在调用super.onCreate()之前调用窗口请求时,问题就解决了,请尝试一下。
@Overridepublic void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.mainmenu);}希望对你有帮助…:)
编辑:有关Android新版本的其他可能解决方案
在Android 4.0及更低版本上隐藏状态栏
<application ... android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > ...</application>
使用活动主题的优点如下:
与以编程方式设置标志相比,它更易于维护并且更不易出错。
这会导致UI过渡更加平滑,因为系统具有实例化应用程序的主要活动之前呈现UI所需的信息。
Android版本低于Jellybean
@Overrideprotected 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); } setContentView(R.layout.activity_main);}在Android 4.1及更高版本上隐藏状态栏
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();
请注意以下几点:
- 清除UI标志后(例如,通过导航离开活动),如果你想再次隐藏栏,则你的应用需要重置它们。请参阅“ 响应UI可见性更改”,以获取有关如何侦听UI可见性更改以使你的应用程序做出相应响应的讨论。
- 设置UI标志的位置有所不同。如果你在活动的onCreate()方法中隐藏系统栏,并且用户按下Home键,系统栏将重新出现。当用户重新打开活动时,不会调用onCreate(),因此系统栏将保持可见。如果你希望系统UI更改在用户进入和离开你的活动时保持不变,请在onResume()或onWindowFocusChanged()中设置UI标志。
- 方法setSystemUiVisibility()仅在从中调用该视图的视图可见时才有效。
- 从视图中导航会使使用setSystemUiVisibility()设置的标志被清除。



