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


推荐阅读
  • 本题要求计算给定两个正整数a和b时,2的-a次方与2的-b次方之和,并将结果以最简分数形式表示。输入包括多组测试数据,每组数据包含两个在2到20范围内的整数。 ... [详细]
  • 在本问题中,游戏的每一步状态均可以视为原始序列的一个子序列。通过定义一个动态规划函数 d(i, j),表示在最优策略下,先手玩家从原序列的第 i 个元素到第 j 个元素之间所能获得的最大分数。 ... [详细]
  • 深入理解动态链接库及其应用
    本文将探讨动态链接库的基本概念,包括Windows下的动态链接库(DLL)和Linux下的共享库(Shared Library),并详细介绍如何在Linux环境中创建和使用这些库。 ... [详细]
  • 本文详细介绍了如何在Python3环境中配置Appium1.4.6,并指导如何连接模拟器进行自动化测试。通过本文,您将了解从环境搭建到模拟器连接的完整流程。 ... [详细]
  • CentOS 7.2 配置防火墙端口开放
    本文介绍如何在 CentOS 7.2 系统上配置防火墙以开放特定的服务端口,包括 FTP 服务的临时与永久开放方法,以及如何验证配置是否生效。 ... [详细]
  • 本文介绍了如何利用Java中的URLConnection类来实现基本的网络爬虫功能,包括向目标网站发送请求、接收HTML响应、解析HTML以提取所需信息,并处理可能存在的递归爬取需求。 ... [详细]
  • 优化Input Checkbox与Label文本对齐的方法
    本文探讨了在网页设计中,如何有效解决input checkbox与label文字不对齐的问题。通过具体的代码实例和解决方案,帮助开发者实现更加美观的用户界面。 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • Java与JSON互转:实现JSON到Java对象及Java对象到JSON的转换
    本文详细介绍了如何在Java中实现JSON数据与Java对象之间的相互转换,包括代码示例和常见问题解决方法。 ... [详细]
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • Python数据类型6 字典
    字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包 ... [详细]
  • 本文详细介绍了ActivityManagerService (AMS) 的工作原理及其在Android系统中的重要角色。AMS作为system_server进程的一部分,在系统启动时加载,负责管理和协调应用程序中的Activity和服务(Service)。文章将通过具体的接口图和通信流程,帮助读者更好地理解AMS的工作机制。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
author-avatar
森tu罗宝殿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有