Fragment和Activity两种沉浸式状态栏的实现

2023-05-16

我们普通的Activity所有的标题栏颜色风格基本是一致的,所以我们可以将这种单独的Activity的沉浸式状态栏放在BaseActivity中实现。但是如果遇到一级栏目的fragment中,且有些fragment中有图片我们该如何处理呢?先看图

这里写图片描述

这里写图片描述

解决方法:
1.普通的Activity我们采用github上的库放在BaseActivity来实现.
2.Activity的fragment我们对其每个fragment进行处理:
- Activity全屏显示
- 设置Activity的主题为:Theme.AppCompat.Light(如果没设置为light设置透明状态栏时会显示黑色)
- 设置状态栏透明
3.这时会出现两种情况,一种是顶部为图片(或布局背景为图片)的fragment实现了图二的效果,达到了我们的要求,另一种是标题栏和状态栏混合在一起,文字混乱,我们开始处理这种情况:
- 在当前的fragment中的标题栏上部添加一块view,使之和状态栏的高度一致便解决了混合在一起显示的乱像.

第二步的代码处理:

//得到当前界面的装饰视图
            if(Build.VERSION.SDK_INT >= 21) {
                View decorView = getWindow().getDecorView();
                //让应用主题内容占用系统状态栏的空间,注意:下面两个参数必须一起使用 stable 牢固的
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                decorView.setSystemUiVisibility(option);
                //设置状态栏颜色为透明
                getWindow().setStatusBarColor(Color.TRANSPARENT);
            }

第三步的代码处理:
XML文件:

。。。
    <View
        android:id="@+id/fillStatusBarView"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:background="@color/c2A81EA" />
。。。

高度设置:

        /**
         * 设置view高度为statusbar的高度,并填充statusbar
         */
        View mStatusBar = view.findViewById(R.id.fillStatusBarView);
        LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mStatusBar.getLayoutParams();
        lp.width = LinearLayout.LayoutParams.MATCH_PARENT;
        lp.height = CommonUtils.getStatusBar();
        mStatusBar.setLayoutParams(lp);
    /**
     * 获取状态栏高度
     * @return
     */
    public static int getStatusBar(){
        /**
         * 获取状态栏高度
         * */
        int statusBarHeight1 = -1;
        //获取status_bar_height资源的ID
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            //根据资源ID获取响应的尺寸值
            statusBarHeight1 = getResources().getDimensionPixelSize(resourceId);
        }
        return statusBarHeight1;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fragment和Activity两种沉浸式状态栏的实现 的相关文章

随机推荐

  • 【测试开发】几种常见的自动化测试框架

    几种常见的自动化测试框架 在软件测试领域 xff0c 自动化测试框架有很多 xff0c 这里主要介绍几种常用的自动化测试框架 1 pytest pytest 是 Python 的一种单元测试框架 xff0c 与 Python 自带的 uni
  • MPV 快捷键

    按键功能RIGHT前进 5 秒LEFT后退 5 秒UP前进 60 秒DOWN后退 60 秒 0 9091 倍速播放 1 1 倍速播放 0 5 倍速播放 2 0 倍速播放Backspace还原到 1 0 倍速Space 或 p播放 暂停 下一
  • 清除DNS 缓存记录

    original link http www linuxfly org post 543 为了提高DNS 解析的记录 xff0c 很多操作系统都会提供缓存DNS 记录的功能 xff0c 但是 xff0c 这可能会为测试DNS 服务或域名设定
  • Jetson TX2更换软件源

    TX2的软件源为国外服务器 xff0c 网速会很慢 xff0c 需要换国内的ARM源 备份 etc lib路径下的source list文件 xff0c 然后在终端 xff08 按ctrl 43 alt 43 T打开 xff09 执行以下命
  • python和Microsoft Visual C++ Build Tools版本安装

    在windows环境下 xff0c python需要调用Microsoft Visual C 43 43 compiler编译器 xff0c 尤其是在安装第三方包时候 xff0c 会build项目 xff0c 这时如果没有安装或者安装不协调
  • WebSocket 实现数据实时刷新

    WebSocket 是HTML5的一个新协议 xff0c WebSocket 使得客户端和服务器之间的数据交换变得更加简单 xff0c 允许服务端主动向客户端推送数据 在 WebSocket API 中 xff0c 浏览器和服务器只需要完成
  • 计算机毕业设计论文资料查找

    学位论文的材料准备 所谓材料 xff0c 就是为科学研究和论文写作的需要而搜集的一系列事实和事理 撰写学位论文 xff0c 首先要占有丰富的材料 xff0c 这是科研和写作的基础 在这基础上 xff0c 对材料进行加工整理 综合分析 xff
  • 使用VS Code编写、调试和运行C++程序。

    上次提到的是VS Code怎么编写 调试和运行pytho程序 xff0c 这次来说说使用VS Code来对C 43 43 程序操作是怎么个流程和注意哪些问题 环境说明 xff1a Ubuntu18 04 VS Code g 43 43 编译
  • 搭建gitlab

    安装参照 https blog csdn net duyusean article details 80011540 配置的阿里云邮箱 Email Settings gitlab rails 39 gitlab email enabled
  • webrtc系列-kurento相关的一些尝试

    公司最近要做个ICU探视系统 于是在网上找了一个开源的webrtc实现kurentokurento github地址 https github com Kurento kurento media server 下载kurento docke
  • P1080 国王游戏(c++)

    题目 xff1a 题意 xff1a 找出获得最高赏金的大臣 每一个大臣获得的赏金 61 国王的左手 前面所有大臣的左手乘积 自己的右手 于是这里可以自然的想到贪心 xff1a 尽可能让前面所有人的乘积更小 xff0c 而自己的右手又尽可能地
  • 1.1 Qt Creater使用Python开发桌面软件的操作流程

    Qt Creater及Python的下载与安装过程不再赘述 xff0c 读者可自行在网上搜索相应的下载与安装方法 首先我们打开Qt Creater xff0c 单击 Create Project 按钮或单击菜单栏中的 文件 New Proj
  • zootracer使用说明——一款视频物体追踪软件,获取运动物体在屏幕坐标系的运动轨迹

    警告 xff01 软件会使用大量计算机资源 xff0c 请使用配置较高的电脑运行程序 xff01 不然容易把电脑跑坏 xff01 我的配置 xff1a CPU AMD Ryzen 7 5800H with Radeon Graphics G
  • Dockerfile概念简介

    Dockerfile概念简介 前言一 dockerfile概念二 Docker镜像的创建 1 基于现有镜像创建 2 基于本地模板创建 3 基于dockerfile创建 dockerfile结构 xff08 四部分 xff09 构建镜像命令
  • Android:file.mkdirs() false

    如果创建文件目录失败 就要考虑两个原因 1 是否给了读写权限 清单文件有读写权限 但是创建目录之前是否允许了 span class token operator lt span uses span class token operator
  • 【Flutter web】内网网站如何发布?解决外网下canvaskit.js和字体无法加载问题

    背景 由于部署的网站只能在内网下使用 xff0c 部署服务器又不能访问外网 xff0c 导致Flutter web部署遇到很多问题 xff0c 比如 xff1a 白屏 部署的网站为何首次加载缓慢 xff0c 会白屏 xff1f 通过浏览器开
  • 【Flutter web】实现批量生成可下载的二维码,二维码图片点击下载

    这里写自定义目录标题 先看效果 xff1a 方法 xff1a 先看效果 xff1a 方法 xff1a web布局就略过 xff0c 自行练习 xff0c 只讲重点 xff01 此项目需要用到三个依赖库 xff1a zxing2 0 1 0i
  • android 实现类似个人中心的界面设计

    上效果图 xff1a 先理清设计思路 xff1a 1 外层用linearlayout包裹 xff0c linearlayout采用shape 搭上描边 圆角和填充背景色 2 里层采用relativelayout填充进textview ima
  • 上传项目到github并供团队克隆

    github注册就不说了 1 创建仓库 创建后就能在首页中看到创建的仓库名了 2 本地克隆仓库 到github的项目仓库中找到项目的地址 xff0c 如第一图 磁盘中创建项目文件夹作为仓库 xff0c 右键选择torToiseGit gt
  • Fragment和Activity两种沉浸式状态栏的实现

    我们普通的Activity所有的标题栏颜色风格基本是一致的 xff0c 所以我们可以将这种单独的Activity的沉浸式状态栏放在BaseActivity中实现 但是如果遇到一级栏目的fragment中 xff0c 且有些fragment中