Dialog全屏,去掉状态栏的方式
dialog即使设置全屏了,但还是有状态栏占用高度这;
直接将下面这行代码放到你的dialog中即可
@override protected void onstart() { super.onstart(); int uioptions = view.system_ui_flag_hide_navigation | view.system_ui_flag_layout_stable | view.system_ui_flag_hide_navigation | view.system_ui_flag_layout_hide_navigation | view.system_ui_flag_immersive | view.system_ui_flag_fullscreen; this.getwindow().getdecorview().setsystemuivisibility(uioptions); }
顺便说下自定义dialog宽高:
windowmanager.layoutparams attributes = getwindow().getattributes(); attributes.width = width; attributes.height = height; getwindow().setattributes(attributes);
添加两个基本的style
<!--普通dialog样式--> <style name="customerdialog" parent="@android:style/theme.dialog"> <item name="android:windowframe">@null</item> <item name="android:windowisfloating">true</item> <item name="android:windowistranslucent">true</item> <item name="android:windownotitle">true</item> <item name="android:background">@android:color/transparent</item> <!-- <item name="android:windowanimationstyle">@android:style/animation.translucent</item> --> <item name="android:windowbackground">@android:color/transparent</item> <item name="android:windowsoftinputmode">statehidden|adjustpan</item> </style> <!--透明背景dialog样式--> <style name="transparentdialogstyle" parent="@android:style/theme.dialog"> <item name="android:windowbackground">@android:color/transparent</item> <item name="android:windownotitle">true</item> <item name="android:backgrounddimenabled">false</item> </style>
补充知识:android关于全屏设置和隐藏状态栏、沉浸式状态栏的总结
1.全屏和推出全屏
实现全屏
getwindow().setflags(windowmanager.layoutparams.flag_fullscreen,windowmanager.layoutparams.flag_fullscreen);
有一个view.setlayoutparams的方法,注意这个layoutparams跟的不是自身的layoutparams而是父容器的layoutparams
退出全屏
final windowmanager.layoutparams attrs = getwindow().getattributes(); attrs.flags &= (~windowmanager.layoutparams.flag_fullscreen); getwindow().setattributes(attrs); getwindow().clearflags(windowmanager.layoutparams.flag_layout_no_limits);
2.隐藏状态栏
getwindow().getdecorview().setsystemuivisibility(view.invisible);
参数:
view.system_ui_flag_visible:显示状态栏,activity不全屏显示(恢复到有状态的正常情况)。
view.invisible:隐藏状态栏,同时activity会伸展全屏显示。
view.system_ui_flag_fullscreen:activity全屏显示,且状态栏被隐藏覆盖掉。
view.system_ui_flag_layout_fullscreen:activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,activity顶端布局部分会被状态遮住。
view.system_ui_flag_layout_hide_navigation:效果同view.system_ui_flag_layout_fullscreen
view.system_ui_layout_flags:效果同view.system_ui_flag_layout_fullscreen
view.system_ui_flag_hide_navigation:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
view.system_ui_flag_low_profile:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
3.沉浸式状态栏(android4.4开始引进)
(1).通过systembartintmanager
if (build.version.sdk_int >= build.version_codes.kitkat) { settranslucentstatus(true); systembartintmanager tintmanager = new systembartintmanager(this); tintmanager.setstatusbartintenabled(true); tintmanager.setstatusbartintresource(r.color.color_top_bg);// 通知栏所需颜色 } @targetapi(19) private void settranslucentstatus(boolean on) { window win = getwindow(); windowmanager.layoutparams winparams = win.getattributes(); final int bits = windowmanager.layoutparams.flag_translucent_status; // windowmanager.layoutparams.flag_translucent_navigation if (on) { winparams.flags |= bits; } else { winparams.flags &= ~bits; } win.setattributes(winparams); }
(2).通过顶部增加同actionbar颜色的view(如果设置后出现tittlebar则在清单文件里面配置activity的style为notittlebar)
window window = getwindow(); window.addflags(windowmanager.layoutparams.flag_translucent_status); viewgroup decorview = (viewgroup) window.getdecorview(); view = new view(this); view.setlayoutparams(new viewgroup.layoutparams( viewgroup.layoutparams.match_parent, getstatusbarheight(this))); view.setbackgroundcolor(getresources().getcolor(r.color.color_top_bg)); decorview.addview(view);
以上这篇dialog全屏,去掉状态栏的方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。