当前位置: 移动技术网 > IT编程>移动开发>Android > Dialog全屏,去掉状态栏的方式

Dialog全屏,去掉状态栏的方式

2020年05月11日  | 移动技术网IT编程  | 我要评论

中国北方射击场,指法在线练习,寂月神社

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全屏,去掉状态栏的方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网