热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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

这篇文章主要介绍了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

 
 


 
 

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


推荐阅读
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 本文介绍了 AngularJS 中的 $compile 服务及其用法,通过示例代码展示了如何使用 $compile 动态编译和链接 HTML 元素。 ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • ZooKeeper 入门指南
    本文将详细介绍ZooKeeper的工作机制、特点、数据结构以及常见的应用场景,包括统一命名服务、统一配置管理、统一集群管理、服务器动态上下线和软负载均衡。 ... [详细]
  • 自动验证时页面显示问题的解决方法
    在使用自动验证功能时,页面未能正确显示错误信息。通过使用 `dump($info->getError())` 可以帮助诊断和解决问题。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 数字资产量化交易通过大数据分析,以客观的方式制定交易决策,有效减少人为的主观判断和情绪影响。本文介绍了几种常见的数字资产量化交易策略,包括搬砖套利和趋势交易,并探讨了量化交易软件的开发前景。 ... [详细]
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
  • 自定义滚动条美化页面内容
    当页面内容超出显示范围时,为了提升用户体验和页面美观,通常会添加滚动条。如果默认的浏览器滚动条无法满足设计需求,我们可以自定义一个符合要求的滚动条。本文将详细介绍自定义滚动条的实现过程。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
author-avatar
果子露强逼_604
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有