一个activity有多个fragment,分别设置每个fragment的状态栏颜色。

一个activity中有多个fragment的透明状态栏处理 Android 透明状态栏,相信大家都可以找到方法这里再啰嗦一下: /** * 修改状态栏为全透明 * * @param activity */ @TargetApi(19) public static void transparencyBar(Activity activity) { if (Build.VERSION 阅读详情

今天在做一个项目的时候要实现一个activity中可以左右滑动的界面,类似今日头条的新闻界面。我采用的viewpaget和fragment实现。但是问题来了,我想让每个fragment的状态栏有不同的颜色,或者背景图,找了好多博客没找到,如果是activity那就简单了,直接把状态栏设置成透明,然后在布局中设置颜色就可以了,那顺便就把activity的设置方法讲一下。
1.首先定义一个style

  <style name="ColorTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">false</item>
        <!--Android 5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色-->
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>
    2.在manifests中设置activity的theme
  <activity
            android:name=".ui.NewsDetailActivity"
            android:theme="@style/ColorTranslucentTheme"></activity>
    3.然后就是在布局文件中设置了
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/gray"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

最重要的就是 android:fitsSystemWindows=”true” 这句话了,然后设置你想要的颜色 android:background=”@color/gray” 也可以是 图片android:android:background=”@drawable/…….” 这样就可以。代码只粘贴的头部,其他的不用设置,注意这个LinearLayout 是最外层的父布局。

下 面就来讲一下fragment怎么设置了
首先说一下想法,我也在知乎上看到的一句话,就是设置包含viewpager的activity状态栏设置透明,就是上面说到的activity设置状态栏。然后让每个fragment自己修改状态栏颜色。下面就是步骤了。

    1.就是让activity设置透明了状态栏,只要设置activity的theme就可以了,布局不需要改,这句话就是设置状态栏为透明name="android:statusBarColor">@android:color/transparent</item>

    2.每个fragment不都有自己的布局吗,在自己的布局中设置
    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:background="@drawable/caobin"
    android:orientation="vertical">

还是那两句代码 ①android:fitsSystemWindows=”true”
② android:background=”@drawable/caobin”可以设置颜色和图片。其实就是这么简单avtivity和fragment其实差不多,只是activity就设置一个layout,而fragment每个都要设置,并且包含多个fragment的activity状态栏必须设置透明,原来也是查了好多资料,还有说在代码中设置状态栏颜色的

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//因为不是所有的系统都可以设置颜色的,在4.4以下就不可以。。有的说4.1,所以在设置的时候要检查一下系统版本是否是4.1以上  
            Window window = getWindow();  
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);  
            window.setStatusBarColor(getResources().getColor(R.color.action_color_blue));  
        }  

你们可以去试一下,各种问题,就不想说了。对了还有个问题就是,4.4之后加入windowTranslucentStatus的属性,所以想用必须是4.4之后的版本,之前的版本我就不知道了,我也是小白,还是就是4.4和5.0有差别,具体我也不知道。那个style要写在values-19下面。我说的这个方法在fragment中在嵌套fragment也可以用。好了差不多说完了,关于版本问题你们可以看看鸿洋的博客http://blog.youkuaiyun.com/lmj623565791/article/details/48649563/

今天突然发现上面说的fragment设置方法会导致错位,就是控件会占据状态栏的位置

像这样!最上面重叠了

这里写图片描述

那天我只是实现下面这样的效果,用起来没有问题。
这里写图片描述

要用的话,只能是最上要设置padding。 android:layout_paddingTop=”20dp”这个DP值自己把握。鸿神的博客也有提到!每个手机的状态栏高度都不一样,大多数都是20dp,要适配手机的话不建议直接设置paddingTop=20dp,github上面有个statusBarUtils项目,里面的做法是获取状态栏的高度然后加一个透明的且与状态栏一样高的view站着地方,有需要的可以去看看。https://github.com/laobie/StatusBarUtil

想要笔者的demo的点这里:https://github.com/caobin821651400/news2
还是把代码贴上吧。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/gray"
    android:fitsSystemWindows="true"
    android:paddingTop="20dp"
    android:orientation="vertical">

    <TextView
        android:gravity="center"
        android:background="@color/white"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="关心界面" />

</LinearLayout>

设置一个padding,我想是不是可以在代码中获取状态栏的高,然后设置padding的值与状态栏的高一致。谁有好的方法可以留言。

透明状态栏的实现(Activity里有5个fragment,fragment顶部有图片有纯色的actionbar) 新的APP中需要实现透明状态栏(也有的称为沉浸式状态栏),在实际开发中发现有的页面是单一的activity,有的页面是Activity里有几个fragment,fragment顶部有图片有纯色的actionbar(1)在单一的activity中,我参考郭霖的一篇博客《Android状态栏微技巧,带你真正理解沉浸式模式》实现了,在activity的oncreate()下: setContentVi... 阅读详情

相关推荐

一个Activity中多个Fragment实现沉浸式状态栏的解决方法

主要介绍了一个Activity中多个Fragment实现沉浸式状态栏解决方法,对于解决这个问题要分为两部分,具体内容详情,大家参考下本文吧

Android Activity嵌套Fragment可以自行修改状态栏字体颜色为黑还是白色

以前遇到了这样的问题。一直没有好的解决办法。后来。有人推荐了这个。所以写出来保存一下 原文地址     http://www.jianshu.com/p/2a884e211a62 Git 地址  https://github.com/gyf-dev/ImmersionBar     自从android4.4开始,android手机状态栏再也不是一成黑的时代,之前叫做变色龙,miui6发布

a872822645的博客 1万+

高分7(GF7)卫星数据制作平原地区DSM/DEM(三)——可信度分割

李国春(接上)

副组长的博客 1714

Android 非常简单的实现 Fragment状态栏一体化布局,状态栏字体的颜色改变,

做一个点上的项目的时候遇到一个问题,就是商城首页的布局要覆盖状态栏,可以这么理解,上图:就像京东的首页一样的效果 我的项目是 MainActivity + 四个Fragment, 第一步:需要把状态栏的背景色变为透明色,这个网上很多博客都写过,我就不写了 第二部:我先说一下这个属性fitSystemWindows,因为不管是做状态栏变色和一体化布局,都相关这个属性

LHBTM的博客 3620

OCR开发实战:如何用PaddleOCR C++版实现本地文字识别(附模型文件处理技巧)

本文详细介绍了如何使用PaddleOCR C++版实现本地文字识别,包括环境搭建、工程编译、运行时优化等全流程。重点讲解了在VS2019/VS2022环境下配置PaddleOCR的CPU推理性能优化技巧,以及模型文件处理的实际应用方法,帮助开发者高效完成OCR本地化部署。

devops8pract的博客 335

车载测试面试题总结

首先确认是什么问题,如果是测试软件的问题就先确定自己的测试方法有没有问题,如果没有问题,那就是测试软件的问题,这时候就需要提bug 进行跟踪,(比如BCM测试的时候,先明确测试的输入,对输入)进行需求分析,然后设计测试用例,进行用例评审,评审完执行测试用例形成最终的版本,台架分为:hil(黑尔)台架,单个控制器的台架、整车台架、车身台架、动力系统台架等,主要验证其功能,或者实车无法满足的测试环境。这个人不可能一直,点击几千次或者多少次几个小时连续点击,人不可能一直在点。因为要模拟一下这个稳定性,

woaxiaoqing的博客 7817

修改状态栏颜色和状态栏字体颜色2

一个activity多个fragment,修改每个fragment的状态栏颜色和状态栏字体的颜色1、设置activity的状态栏透明,设置activity的theme value-v19.xml &lt;style name="FirstPageStyle" parent="Theme.AppCompat.Light.NoActionBar"&gt;        &lt;item name="a...

u010015933的博客 1583

利用CiteSpace实现知网专利文献的高效计量与可视化分析

本文详细介绍了如何利用CiteSpace软件对中国知网(CNKI)的专利文献进行高效的文献计量与可视化分析。文章提供了从数据获取、格式转换、参数设置到图谱解读的完整工作流,旨在帮助研究者快速掌握该工具,从而洞察技术领域的研究热点、核心机构、学者合作网络及发展趋势,提升专利情报分析效率。

weixin_28520495的博客 292

安卓修改状态栏颜色

/实现状态栏图标和,一起使用才会占据主体。

weixin_61892541的博客 444

【SPSS实战】手动实现Quade非参数协方差分析:从数据准备到结果解读

本文详细介绍了在SPSS中手动实现Quade非参数协方差分析的实战方法。当数据不满足正态分布等参数检验假设时,通过将协变量和因变量转换为秩,并利用秩回归残差进行Kruskal-Wallis组间比较,提供了一种清晰、可操作的近似解决方案。该方法有效解决了非正态数据的协变量调整问题,适用于实验研究和调查数据分析。

bean的博客 468

51单片机———UART串口通信

传统理解就是信息的传输与交换。单片机与单片机之间,单片机与电脑之间,以及单片机与各式各样的模块之间都可以进行通信。如果没有通信,那么单片机的功能仅仅局限于它本身,它没办法从其他设备获取有用信息,也无法将自己产生的信息告诉其他设备,这样子单片机与外围器件的合作就会收到限制,没办法完成更多的功能,就像一个没办法拓展业务的公司。:实现我们程序当中写的P0=0xFC,就是一次同时对8位进行信号的输出;习惯上,我们还称P0、P1、P2、P3为单片机的4组并行总线:实现低位先发 高位在后。

m0_74225397的博客 3295

android fragment在锁屏后状态栏,一个Activity中多个Fragment实现沉浸式状态栏的解决方法...

一个Activity中多个Fragment实现沉浸式状态栏的解决方法发布时间:2020-10-18 16:36:21来源:脚本之家阅读:76作者:Sandy林项目中遇到一个问题:一个Activity有多个Fragment,每个Fragment的沉浸式状态栏不一样,有的是红色,有的是黑色,有的是一张图片(图片的一部分在状态栏中显示),并且要要兼顾虚拟按键(常说的导航栏)遮盖住布局导致自己布局中的某些...

weixin_28994935的博客 221

【2026最新】3分钟Windows极速部署OpenClaw,完整可复制命令+全链路避坑指南

很多新手在Windows环境部署OpenClaw时,总会遇到各种玄学问题:WSL环境配置失败、Docker镜像拉取超时、容器启动后无法访问、权限报错、数据丢失……网上大量教程要么是Linux环境的,要么是早已过时的旧版本配置,照着操作不仅没法3分钟部署,反而要花几小时踩坑填坑。

2601_94871597的博客 493

android 标题栏 fragment,一个Activity中多个Fragment实现沉浸式状态栏

一个Activity中多个Fragment实现沉浸式状态栏,之前由于项目中需要使用到沉浸式状态栏是没有将图片也沉浸的,而且单个的activity是比较好处理的,现在由于需求的变动需要实现在一个Activity中多个Fragment沉浸式,并且其中一个要对图片实现沉浸式。在查阅资料,以及自已测试的过程中最终实现了。先看效果图:详细步骤:1.首先将整个项目样式修改为NoActionBar2.在Main...

weixin_42196667的博客 865

TC3XX - MCAL知识点(一):新建Tc3xx EB-tresos工程

基于EB-tresos建立Hightec或者Tasking工程的时候,第一个步骤就是需要新建一个EB-tresos的工程,本文记录一下如何新建一个EB-tresos工程,以及对其进行简单的操作。那么Tc3xx的MCAL包含哪些内容呢?

梦想技术家 2970

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

修改状态栏颜色和状态栏字体颜色

一个activity多个fragment,修改每个fragment的状态栏颜色和状态栏字体的颜色1、设置activity的状态栏透明,设置activity的theme value-v19.xml &lt;style name="FirstPageStyle" parent="Theme.AppCompat.Light.NoActionBar"&gt;        &lt;item name="a...

u010015933的博客 2630

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android 状态栏一体化 fragment,单Activity多Fragment动态修改状态栏颜色功能

目录介绍1.关于如何集成2.关于如何使用3.关于鸣谢4.关于版本更新说明5.关于其他介绍0.说明状态栏工具类,应该可以满足绝大多数的使用场景。具体可以参考代码案例,欢迎star!!1.关于如何集成在gradle中添加:compile 'cn.yc:YCStatusBarLib:1.3.1'2.关于如何使用2.1.1 DrawerLayout设置状态栏//为DrawerLayout 布局设置状态栏颜...

weixin_42298039的博客 761

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

一个Activity中添加多个Fragment导致fitsSystemWindows无效,在某个fragment中设置状态栏,背景,颜色都是自定义实现

无论是framelayout设置,还是viewpager设置,导致fitsSystemWindows无效的问题 其中你都要设置dispatchApplyWindowInsets方法 public class NewCustomViewPager extends ViewPager { private boolean isCanScroll = true; public NewCustomViewPager(Context context, AttributeSet attrs) {

qq_26414049的博客 1206

单Activity+多Fragment以及多模块Activity+多Fragment“的设计模式编写的架构

单Activity+多Fragment以及多模块Activity+多Fragment"的设计模式编写的架构Rocket一、特性二、Github地址三、分享设计Rockt架构的思路四、踩坑经验之旅1、Can not perform this action after onSaveInstanceState2、FragmentManager is already executing transacti...

博由心生,福泽一生 1846

android动态状态栏颜色,单Activity多Fragment动态修改状态栏颜色功能

目录介绍1.关于如何集成2.关于如何使用3.关于鸣谢4.关于版本更新说明5.关于其他介绍0.说明状态栏工具类,应该可以满足绝大多数的使用场景。具体可以参考代码案例,欢迎star!!1.关于如何集成在gradle中添加:compile 'cn.yc:YCStatusBarLib:1.3.1'2.关于如何使用2.1.1 DrawerLayout设置状态栏//为DrawerLayout 布局设置状态栏颜...

weixin_36399446的博客 897

一个Activity中多个Fragment实现沉浸式状态栏

一个Activity中多个Fragment实现沉浸式状态栏

lf0814的博客 8489
上一篇: 动态添加radiobutton时,设置margin
下一篇: 滑动到尽头时去掉阴影效果
Yogurt丶
博客等级 码龄11年 36粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值