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两种沉浸式状态栏的实现 的相关文章

  • 在片段中初始化字体

    我有这一行 Typeface font Typeface createFromAsset getAssets fonts Delius Regular ttf but the getAssets 参数似乎带来了一些错误 它带有可怕的红线下划
  • 如何恢复Android Fragment视图状态

    我有申请titles片段和contents屏幕上的片段 当用户单击标题片段中的项目时 将创建相应的片段并将其插入到框架中 并且所选标题在标题片段中突出显示 交易完成fragment addToBackStack 所以当用户点击BACK键 恢
  • 如何缓存片段视图

    我想缓存一个片段视图 我的活动有可滑动的选项卡 每个选项卡调用不同的片段 但是 当我在选项卡之间滑动时 由于片段视图被破坏 在滑动操作期间会重建 转换似乎相当慢 有谁知道如何缓存每个片段的视图以防止此问题 我使用库支持 v4 和 api 1
  • Spring Boot:Thymeleaf 打包后无法解析片段

    我使用这样的片段 RequestMapping value fragment nodeListWithStatus method RequestMethod GET public String nodeListWithStatus Mode
  • 当我尝试初始化 GoogleMap 对象时,出现 NullPointerException

    我正在尝试在我的片段类之一中显示一张地图 我在 XML 类中为地图创建了一个片段 并按如下方式使用它 Override public View onCreateView LayoutInflater inflater ViewGroup c
  • 如何将文本视图从一个片段更新到另一个片段

    我有一个包含两个片段的活动 MainActivity Fragment1 有一个 EditText 和一个按钮 当用户按下按钮时 EditText 内的文本将被发送到只有 TextView 的 Fragment2 但我不太清楚如何将文本从
  • 片段 YouTubePlayerSupportFragment 中存在重复的 ID

    我正在尝试使用 API Youtube 执行播放视频 但在 XML 重复 ID 0x7f080039 中收到错误 知道如何解决这个问题吗 我的片段扩展了 YouTubePlayerSupportFragment Override publi
  • 片段中的列表视图不起作用

    这是我的片段代码 public class LeftFragment extends ListFragment ArrayList
  • 片段中的片段不刷新

    这是我的应用程序 带有片段 左侧有一个ListView 您可以在其中进行选择 如果您选择了右侧之一 则加载一个片段并将选项卡添加到 ActionBar 有这样的代码 import java util ArrayList import and
  • 为什么我想要 `setRetainInstance(false)`? - 或 - 处理设备旋转的正确方法

    如果我对此有任何错误 请纠正我 这是一种澄清问题 因为我还没有在任何地方看到它明确写过 在Android 4中 您可以调用setRetainInstance true on a Fragment这样在配置更改时 这基本上意味着设备旋转 Fr
  • 如何在 XML 布局中添加片段

    我有一个布局 其中包含一个片段 如下所示
  • Android Fragment 中的 EditText 值不刷新

    我正在使用Viewpager在 3 之间切换fragments 一切工作正常 除了第二个选项卡的刷新 或fragment 在这个选项卡中 我有一张图片 一些静态的Textviews 一些动态TextViews还有一些EditText fie
  • 从片段调用片段

    我想通过单击当前片段中的按钮来调用当前片段中的另一个片段 这是我的主要活动 import android app FragmentManager import android os Bundle import android support
  • 如果我在 XML 布局中声明一个片段,如何将它传递为 Bundle?

    我有一个活动已替换为片段 该活动采用了一个 Intent 其中包含一些有关该活动应该显示哪些数据的额外信息 现在 我的 Activity 只是执行相同工作的 Fragment 的包装器 如果我使用标记在 XML 中声明该片段 如何将该捆绑包
  • Mesibo 通话 UI 未更新

    我正在尝试更改 Mesibo Call UI 的配置 但它并没有改变 我尝试如下 MesiboCallConfig mesiboCallConfig new MesiboCallConfig mesiboCallConfig backgro
  • Android 中的 Fragment-Fragment 通信

    我在Android编程方面处于初级水平 所以我需要你真诚的帮助 请任何人帮助我 我正在尝试使用片段构建滑动用户界面 所以我真正的疑问是 我有一个Fragment say FragmentA 它有一个TextView and Button在其
  • 是否可以仅使用一个实例来创建片段

    我只是想知道 片段创建只能有一个实例或单例吗 我经历了谷歌iosched项目也 他们只是简单地创造 Fragment a new Fragment 每当他们想要 假设例如 public static FragmentManager inst
  • 片段内部类应该是静态的

    我有一个FragmentActivity具有应显示的内部类的类Dialog 但我必须做到static Eclipse 为我提供了抑制错误的功能 SuppressLint ValidFragment 如果我这样做是不是很糟糕 可能的后果是什么
  • 以编程方式切换片段

    我有一个带有两个片段的寻呼机 每个片段都有自己的 xml 我的问题是是否可以以编程方式从一个片段切换到另一个片段并触发任何侦听器 此致 我假设你的意思是浏览器 http developer android com reference and
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E

随机推荐

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

    几种常见的自动化测试框架 在软件测试领域 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中