public static void setSize( final int width, final int height ){
//DO SOME OTHER STUFF...
instance_.getWindow().setLayout( width, height );
// Prevent status bar re-appearance
Handler delay = new Handler();
delay.postDelayed( new Runnable(){ public void run() {
instance_.getWindow().setLayout(
WindowManager.LayoutParams.FILL_PARENT,
WindowManager.LayoutParams.FILL_PARENT );
}}, FILL_PARENT_ON_RESIZE_DELAY_MILLIS );
}
然后窗口正确地重新调整大小,并且无论触发此事件的事件如何,状态栏都不会重新出现 .
115
这是一个示例代码 . 您可以打开/关闭标志以隐藏/显示特定部件 .
public static void hideSystemUI(Activity activity) {
View decorView = activity.getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
//| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);
}
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
</style>
<style name="FullScreenTheme" parent="AppTheme">
<!--this property will help hide ActionBar-->
<item name="windowNoTitle">true</item>
<!--currently, I don't know why we need this property since use windowNoTitle only already help hide actionbar. I use it because it is used inside Theme.AppCompat.Light.NoActionBar (you can check Theme.AppCompat.Light.NoActionBar code). I think there are some missing case that I don't know-->
<item name="windowActionBar">false</item>
<!--this property is used for hiding StatusBar-->
<item name="android:windowFullscreen">true</item>
</style>
For hide system navigation bar
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
setContentView(R.layout.activity_main)
...
}
}
二 . 您的主要应用主题是Theme.AppCompat.Light.NoActionBar
For hide ActionBar / StatusBar style.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
</style>
<style name="FullScreenTheme" parent="AppTheme">
<!--don't need any config for hide ActionBar because our apptheme is NoActionBar-->
<!--this property is use for hide StatusBar-->
<item name="android:windowFullscreen">true</item> //
</style>
public class Splash extends Activity {
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 2000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.splash_creen);
/* New Handler to start the Menu-Activity
* and close this Splash-Screen after some seconds.*/
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity. */
Intent mainIntent = new Intent(Splash.this,MainActivity.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
<activity
android:name=".Launch"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <!-- This line is important -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
25 回答
只需将此代码粘贴到
onCreate()
方法中即可对于那些使用AppCompact ... style.xml的人
然后把名字放在你的清单中......
提示:使用getWindow() . setLayout()会搞砸你的全屏显示!请注意此方法的文档说:
http://developer.android.com/reference/android/view/Window.html#setLayout%28int,%20int%29
出于我的目的,我发现我必须使用带有绝对参数的setLayout来正确调整我的全屏窗口的大小 . 大多数时候,这很好 . 它是由onConfigurationChanged()事件调用的 . 然而,有一个打嗝 . 如果用户退出应用程序,更改了方向并重新进入,则会导致触发包含setLayout()的代码 . 在此重新进入时间窗口期间,我的状态栏(由清单隐藏)将重新出现,但在任何其他时间setLayout()都不会导致此问题!解决方案是在具有硬值的那个之后添加一个额外的setLayout()调用,如下所示:
然后窗口正确地重新调整大小,并且无论触发此事件的事件如何,状态栏都不会重新出现 .
这是一个示例代码 . 您可以打开/关闭标志以隐藏/显示特定部件 .
然后,您重置为 default 状态:
您可以从
onCreate
调用上述功能:它对我有用 .
在 KitKat 中有一种名为Immersive Full-Screen Mode的技术 .
Example
谢谢你回答@Cristian我收到了错误
我解决了这个问题
首先,您必须使用下面的“NoActionBar”设置应用主题
然后在全屏活动中添加这些行 .
它将隐藏操作栏/工具栏以及全屏活动中的状态栏
https://developer.android.com/training/system-ui/immersive.html
活动:
AndroidManifests:
AndroidManifest.xml
I.您的主要应用主题是Theme.AppCompat.Light.DarkActionBar
For hide ActionBar / StatusBar
style.xml
For hide system navigation bar
二 . 您的主要应用主题是Theme.AppCompat.Light.NoActionBar
For hide ActionBar / StatusBar
style.xml
For hide system navigation bar
Similar 喜欢
Theme.AppCompat.Light.DarkActionBar
.Demo
希望它有所帮助
你可以以编程方式执行:
或者您可以通过
AndroidManifest.xml
文件执行此操作:Edit:
如果您使用的是AppCompatActivity,则需要设置如下主题
小心
如果您使用任何方法将操作栏设置为以下内容:
它将导致空指针异常 .
显示完全沉浸感:
退出完全沉浸式模式:
使用kotlin这是我的方式:
Immersive Mode
沉浸式模式适用于用户将与屏幕进行大量交互的应用程序 . 示例包括游戏,在图库中查看图像或阅读分页内容,如书籍或演示文稿中的幻灯片 . 为此,只需添加以下行:
Sticky immersive
在常规沉浸式模式中,每当用户从边缘滑动时,系统都会负责显示系统条 - 您的应用甚至不会意识到手势发生了 . 因此,如果用户可能实际上需要从屏幕边缘滑动作为主要应用体验的一部分 - 例如在玩需要大量滑动或使用绘图应用的游戏时 - 您应该改为启用“粘性”沉浸式模式 .
有关更多信息:Enable fullscreen mode
如果您使用键盘,有时会出现StatusBar在键盘出现时显示的情况 . 在这种情况下,我通常将其添加到我的样式xml中
styles.xml
这也是我的清单
使用Android Studio(当前版本为2.2.2)非常容易添加全屏活动 .
看看步骤:
Done!
现在您可以轻松完成全屏活动(请参阅java类和活动布局以了解其工作原理)!
经过很多时间没有成功,我带来了自己的解决方案,与其他开发人员类似 . 因此,如果有人需要她,那就是 . 我的问题是系统导航栏在调用后没有隐藏 . 同样在我的情况下我需要景观,所以以防万一评论该行和所有 . 首先要创造风格
这是我的清单文件
这是我的spalsh活动
}
这是我的主要内容屏幕活动 . onSystemUiVisibilityChange thi方法退出重要,否则调用后的android主导航栏将保持不再消失 . 真的很烦人的问题,但这个功能解决了这个问题 .
公共类MainActivity扩展AppCompatActivity {
}
这是我的启动画面布局:
我希望这能帮到您
尝试使用
style.xml
中的appcompat . 它可以支持所有平台 .我想使用自己的主题,而不是使用@android:style / Theme.NoTitleBar.Fullscreen . 但它不起作用,因为这里的一些帖子已经提到过,所以我做了一些调整来弄明白 .
在AndroidManifest.xml中:
在styles.xml中:
注意:在我的情况下,我必须使用
name="windowActionBar"
而不是name="android:windowActionBar"
才能正常工作 . 所以我只是用两个来确保在这种情况下我需要稍后移植到新的Android版本 .在 AndroidManifest.xml 文件中:
或者在 Java 代码中:
里面的styles.xml ...
这对我有用 . 希望它能帮到你 .
如果您使用AppCompat和ActionBarActivity,那么使用它
getSupportActionBar().hide();
如果您不想使用主题
@android:style/Theme.NoTitleBar.Fullscreen
因为您已经使用了自己的主题,则可以使用android:windowFullscreen
.在AndroidManifest.xml中:
在styles.xml中: