一、属性定义android:fitsSystemWindows="true" 是一个 布局属性(View 属性),用于告诉系统: “请把我的内容布局边界往内缩,让我不要被系统窗口(比如状态栏、导航栏)遮住...:fitsSystemWindows="true"⚙️ 五、与沉浸式状态栏的关系当你使用沉浸式布局(例如通过代码设置 Window.setDecorFitsSystemWindows(false))时,...六、常见误区误区解释“设置 true 一定能解决遮挡问题”不一定,沉浸式状态栏或透明导航栏时要手动处理 Insets。“它是控制状态栏透明度的”❌ 错误。它只影响布局边距,不控制状态栏颜色或透明度。...七、实战建议目标建议想让内容避开状态栏在根布局加 android:fitsSystemWindows="true"想让背景图铺满全屏(状态栏透明)设置 fitsSystemWindows="false"...它不是“全屏”或“透明”的控制开关,而是“避让系统栏”的提示信号。
下面是同一个activity切换不同fragment时,状态栏文字颜色跟着变化的效果图: 下图是同一个Activity向上滚动时,标题栏和状态栏文字颜色根据变化的效果: 1....android:fitsSystemWindows=”true”属性就可以了,要不布局会跑到状态栏和导航栏下面,与导航栏和状态栏重叠,这当然不是我们希望的。...不使用fiySystemWindow属性,布局怎么能不遮挡状态栏文字 跟第三章节类似,在主页中,需要使布局中带文字的布局向上margin状态栏的高度。...感兴趣的小伙伴可以参下:android沉浸式状态栏、fitsSystemWindows、标题栏折叠 下面我们说说怎么在界面滑动时,修改状态栏和标题栏文字颜色。...这个主要通过监听AppBarLayout滑动的距离,向上滑动,如果大于标题栏的高度,则要动态改变标题栏文字颜色,当标题栏折叠时,改变状态栏文字颜色及返回铵钮图标,同时状态栏文字颜色变成暗色。
使得我们的内容布局可以延伸到系统状态栏,然后直接使用方法 setStatusBarColor() 把系统状态栏设置成透明就好了。...在 Android 4.4 之前是不支持透明状态栏 需要注意的一点是在设置透明状态栏的情况下,是需要我们的内容布局延伸到状态栏的,因此这个时候使用 fitSystemWindows 这个属性是没有意义的...Android4.4透明no.png android:fitsSystemWindows = "true" 属性 可以理解为给所使用的布局设置了状态栏大小的 padding。...LinearLayout 使用 fitsSystemWindows ? Android4.4透明toolbar-yes.png ToolBar 设置 fitsSystemWindows 效果 ?...,但其实实际上是将我们的布局占据了状态栏,然后状态栏是透明的。
这个渐变动画其实可分为两段: 1、导航栏从展开状态向上收缩时,头部的各控件要慢慢向背景色过渡,也就是淡入效果; 2、导航栏向上收缩到一半,顶部的工具栏要换成收缩状态下的工具栏布局,并且随着导航栏继续向上收缩...,新工具栏上的各控件也要慢慢变得清晰起来,也就是淡出效果。...; 2、导航栏向下展开到一半,顶部的工具栏要换成展开状态下的工具栏布局,并且随着导航栏继续向下展开,新工具栏上的各控件也要慢慢变得清晰起来,也就是淡出效果。...为了解决这个问题,我们可以采取类似遮罩的做法,即一开始先给导航栏罩上一层透明的视图,此时导航栏的画面就完全显示;然后随着导航栏的移动距离,计算当前位置下的遮罩透明度,比如该遮罩变得越来越不透明,看起来导航栏就像蒙上了一层面纱...反过来,也可以一开始给导航栏罩上一层不透明的视图,此时导航栏的控件是看不见的,然后随着距离的变化,遮罩变得越来越不透明,导航栏也会跟着变得越来越清晰了。
沉浸式算是目前Android行业比较流行的一种App设计风格,将菜单栏北京设置为导航栏的颜色,感觉顶部状态栏像是被入侵了一样,因此称为沉浸式菜单栏。本文将介绍三种方式去实现沉浸式状态栏。 ?...Google从android kitkat(Android 4.4)开始, 给我们开发者提供了一套能透明的系统ui样式给状态栏和导航栏,这样的话就不用向以前那样每天面对着黑乎乎的上下两条黑栏了,还可以调成跟...) { //透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS..."/> 接着看下第二种方式 实现思路,添加隐藏布局,然后我们动态的计算状态栏的高度,然后把这个高度设置成这个隐藏的布局的高度,便可以实现 在这里我们通过反射来获取状态栏的高度...Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //透明状态栏 getWindow().addFlags
状态栏是 漂浮在这个图片上的。...实现透明状态栏的方法 适配Android 4.4 +的方法: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {...; setContentView(R.layout.activity_main); } 上面的代码中我使用 StatusbarUtils 这个辅助类,这个辅助类调用了 具体的实现透明状态栏的方法...标签 android 提供了 android:fitsSystemWindows 标签,来适配窗体,实际我们可以在我们的布局视图里使用它。...它会使得指定的view自动增加“一个状态栏高度的上间距”,也就是说,它会在保证你的view位于状态栏下方,而不是底下。
先上图看效果 这是Nexus 4.4上的展示效果 ? 这是Nexus 5.0上的展示效果 ?...Google允许开发者在Android 4.4以上设置状态栏透明或半透明,布局填充全屏;而在5.0以上可直接设置状态栏颜色。...所以为了兼容4.4到5.0之间系统,整理步骤如下: 解决思路是:将状态栏设置为透明,标题栏填充全屏,判断4.4以上标题栏高度为原设计高度+状态栏高度,标题栏设置内距上边距为状态栏高度;如果是4.4以下则使用原设计高度...title_translucent_height" android:paddingTop="@dimen/title_margin_top" android:background="#450125" android:fitsSystemWindows...="true" /> 高度和内距上设置刚刚在dimens中的定义的数据 五、特别注意,将TitleBar设置 android:fitsSystemWindows="true" 这样的ok了!
对于android:fitsSystemWindows这个属性你是否感觉又熟悉又陌生呢? 熟悉是因为大概知道它可以用来实现沉浸式状态栏的效果,陌生是因为对它好像又不够了解,这个属性经常时灵时不灵的。...我相信用到android:fitsSystemWindows的朋友基本都是为了去实现沉浸式状态栏效果的。 这里我先解释一下什么是沉浸式状态栏效果。...我相信按照绝大多数人的美好设想,android:fitsSystemWindows属性就应该像是一个开关一样,设置成true就可以打开沉浸式状态栏效果,设置成false就可以关闭沉浸式状态栏效果。...首先为了验证沉浸式状态栏的效果,需要将系统的状态栏改成透明色,代码如下所示: class MainActivity : AppCompatActivity() { override fun onCreate...接着我们给ImageView同样设置了android:fitsSystemWindows属性,如此一来,就可以让图片显示在状态栏的背后了。
和尚我最近正在处理客户端顶部沉浸式展示图片,借此整理了一下和尚自己研究测试的沉浸式状态栏。...沉浸式状态栏大家都很熟悉,即 APP 界面图片延伸到状态栏, 应用本身沉浸于状态栏,即顶部不会默认展示系统的黑条。和尚我技术有限,理解不透彻,仅分享一下自己应用测试中可以呈现的几种样式。 ?...中添加 android:fitsSystemWindows="true",这个很重要,可以使背景图片延伸至状态栏,当然在 Java 文件中设置一样的效果; 的半透明...windowIsTranslucent">true false Java 代码中处理导航栏变黑和透明的主题版本判断
最近在写自己的小东西的时候,遇到了一个Bug,就是沉浸式转态栏与华为虚拟按键的冲突的问题。...先看一下出现问题的图 然后根据网上的一些办法 最多的就是告诉你,在布局文件加这个2个属性 android:fitsSystemWindows="true" android:clipToPadding...虚拟按键是是跑到最下面了,我那个沉浸式状态栏是怎么回事??...还有那个虚拟按键居然是透明的,而且那么丑 然后网上又有人说,把XML里面的两个属性去掉,还有把那个沉浸式状态栏的属性也去掉 android:fitsSystemWindows="true"...至于我的沉浸式状态栏会变色,是根据Tablayout来设置的
就表示该控件会出现在系统状态栏里; 2.2 在程序的主题中将状态栏颜色指定成透明色; 在主题中将android:statusBarColor属性的值指定成@android:color...向上拖动水果图片,背景图上的标题会慢慢缩小,而且会产生错位偏移的效果,toolbar的位置和图片还会产生透明度的变化等等,效果十分炫酷。 ? ?...所以这里需要一个系统差异型的效果,即 对于Android5.0及之后的系统使用背景图和状态栏融合的模式; 在之前的系统中使用普通的模式; 让背景图和系统状态栏融合,需要借助Android:fitsSystemWindows...这里除了将android:fitsSystemWindows属性设置好,还必须在程序的主题中将状态栏颜色指定成透明色。...然后在FruitAcuvityTheme中将状态栏的颜色指定成透明色, 由于values-v21目录是只有Android5.0及以上的系统才会去读取的, 因此这么声明是没有问题的。
CollapsingToolbarLayout 可以看到,Toolbar的标题放大并在下方显示,当我们向上滑动列表时,顶部Header部分的图片向上折叠隐藏,标题向上移动并缩小,同时以渐显式的方式显示蓝色主题...注意,没有设置这个属性时,默认使用Toolbar的标题;statusBarScrim顶部视图折叠状态下,状态栏的遮罩色。通常这样设置:app:statusBarScrim="?...attr/colorPrimaryDark",即style样式中定义的沉浸式状态栏颜色。...(不透明度),在0.0 ~ 1.0之间,默认值为0.5。...表示控件向上折叠退出并以最小高度停留在顶部;前面介绍CollapsingToolbarLayout属性时介绍到了statusBarScrim的使用,其实也可以通过android:fitsSystemWindows
可以这么理解:状态栏与导航栏拥有自己独立的窗口,而且这两个窗口的优先级较高,会悬浮在所有窗口之上,可以把系统自身的状态栏与导航栏看做全透明的,之所有会有背景颜色,是因为下层显示界面在被覆盖的区域添加了颜色...先看下关键点1跟2 ,这里是根据SystemUI的配置决定是否显示状态栏背景颜色,如果状态栏都不显示,那就没必要显示背景色了,其次,如果状态栏显示,但背景是透明色,也没必要添加背景颜色,即不满足(color...最后看一下translucentFlag,默认情况下,状态栏背景色与translucent半透明效果互斥,半透明就统一用半透明颜色,不会再添加额外颜色。...不过,如果状态栏被设置为透明,用户就会看到状态栏下方有一片空白,这种体验肯定不好。这种情况下,往往希望内容能够延伸到状体栏下方,因此,就需要把空白的也留给内容视图。...:fitsSystemWindows属性是系统添加状态栏padding的关键,为什么这样呢?
1 .FitsSystemWindows和ClipToPadding联合运用 我们找到DecroView中的id为content的Framelayout,添加一个高度为statusBar高度的控件,然后调用下面方法...; /** * 设置状态栏颜色 * * @param activity 需要设置的activity * @param color...状态栏颜色值 * @param statusBarAlpha 状态栏透明度 */ public static void setColor(Activity activity...((ViewGroup) childView).setClipToPadding(true); } } } /** * 生成一个和状态栏大小相同的半透明矩形条...* * @param activity 需要设置的activity * @param color 状态栏颜色值 * @param alpha 透明值
: 实现思路: 1、Activity设置自定义Shared Element切换动画 2、透明状态栏(透明Toolbar,使背景图上移) 3、Toolbar底部增加和背景一样的高斯模糊图,并上移图片(为了使背景图的底部作为...2、透明状态栏 // 为头部是View的界面设置状态栏透明 StatusBarUtil.setTranslucentImageHeader(this, 0, binding.titleToolBar);...其中内容根布局不要设置android:fitsSystemWindows="true",这样会额外添加一个状态栏。...这里向大家推荐郭霖大神的一篇文章:Android状态栏微技巧,带你真正理解沉浸式模式,里面讲解了透明状态栏和沉浸式状态栏的渊源和有关设置用法。...+状态栏的高度 final int headerBgHeight = toolbarHeight + StatusBarUtil.getStatusBarHeight(this); // 使背景图向上移动到图片的最底端
也可以将其折叠,当用户向上滑动时展开显示。 使用搜索栏而不是仅仅通过“搜索”文字来实现搜索。文字没有用户所期望的标准搜索栏外观。 启用“清空”按钮。...隐藏状态栏下的内容。默认情况下,状态栏的背景是透明的,是可以看到背后的内容的。保持状态栏可读,并不意味着其背后的内容是可交互的。...在“照片”应用中浏览全屏照片时,只需轻按一次即可再次显示状态栏。 五、标签栏(Tab Bars) 标签栏出现在页面底部,可以在APP的不同模块之间快速切换。标签栏是半透明的,也可添加背景颜色。...在所有版本的iOS中,系统API提供了一系列预设图标。当然你也可以自定义图标。在纵向方向上,标签栏标志符号可以显示在标签标题上方;在横向方向上,字形和标题可以并排出现。...工具栏是半透明的,也可以添加背景颜色,并在用户不需要它们时应该隐藏起来。 例如:在Safari中,当你开始滚动页面时,工具栏会自动隐藏,因为你可能正在阅读。你还可以点击屏幕底部让它再次出现。
沉浸式实现原理其实是使整个activity布局延伸到整个屏幕,然后使状态栏变成透明色,有些手机会有导航栏,同样也可以把导航栏变成透明色,这样会使一些app更加美观。 先看两个概念 状态栏 ?...眼神好的同学已经看到上图中给了四种解决方案啦,在这里我就说一 1.使用dimen自定义状态栏高度 ? 使用系统的fitsSystemWindows属性 ?...使用ImmersionBar的fitsSystemWindows(boolean fits)方法 ? 使用ImmersionBar的statusBarView(View view)方法 ?...修改状态栏字体颜色为深色 ? ? 设置状态栏和导航栏透明度 ? ? ? 解决EditText和软键盘的问题 ? ?...,设置导航栏颜色的时候,底部布局会被导航栏遮住,除此之外还有一个小问题就是当用户设置状态栏为透明色的时候,不能时刻改变bar的颜色值,are you kidding?
上一篇文章介绍了高仿京东的沉浸式状态栏,可是跟京东首页的头部轮播图相比,依然有三处缺憾: 1、京东的头部Banner上方,除了有悬浮着的状态栏,状态栏下面还有一行悬浮工具栏...,内嵌扫一扫图标、搜索框,以及消息图标; 2、把整个页面往上拉,状态栏的背景色从透明变为深灰,同时工具栏的背景也从透明变为白色; 3、页面下拉到顶后,继续下拉会拉出带有“下拉刷新”字样的布局,此时松手则会触发页面的刷新动作...; 上面第一点的状态栏和工具栏悬浮效果,都有对应的解决办法;第二点的状态栏和工具栏背景变更,也存在可行的解决方案。...既然可以知晓到顶与否,同步变更状态栏和工具栏的背景色也是可行的了。...下面是演示页面拉到顶部附件的两种效果图,其中左图为上拉页面使之整体上滑,此时状态栏的背景变灰、工具栏的背景变白;右图为下拉页面使之接近顶部,此时状态栏和工具栏的背景均恢复透明。 ? ?
所以会导致一个问题,在 4.4 到 6.0 之间的系统,状态栏设置为浅色的话,状态栏上面白色的文字和图标会看不清 有一些第三方的系统提供了设置状态栏和状态栏文字、图标颜色的方法,比如小米的MIUI和魅族的...当然,这里面也会有坑,比如 MIUI 提供的修改状态栏字体颜色方法会跟 Android 系统自带的方法冲突,官方说明如下: 关于MIUI状态栏字符颜色逻辑调整说明 经过网上的资料和自己的尝试,MIUI...-- 避免控件会顶到状态栏上 --> fitsSystemWindows">true 要在 Application Theme...加上 fitsSystemWindows">true 不然页面会顶到状态栏上面, 或者 在 Activity 的布局里面加上 android:fitsSystemWindows...,需要先将状态栏设置为透明 setTranslucentStatus(activity); //设置状态栏颜色 SystemBarTintManager
上面也说了这种错误的叫法是不对的,没有沉浸式状态栏 ,这种样式只是将内容 UI 设置成了全屏,把状态栏设置成了透明。...所以这种是叫做 状态栏透明模式 设置透明状态栏 先来几组效果图,从效果 1 开始逐渐递进演示,这里面的几个重要参数会在后面具体说明,这里先说明现象 1.内容布局全屏 在 Android 4.1 以上设置去除状态栏或者认为是状态栏被内容布局遮挡了...这个时候我们只要设置状态栏为透明。就是我们想要的透明状态栏的那种效果了。 效果图: ?...Android 4.4 修改状态栏颜色 // 将状态栏设置为透明(需要 API 19) 设置成这种模式后,状态栏会变成透明,我们的内容布局(只是我们 Activity 对应的布局,不包含 Window...表示是否保留系统栏的空间。可以在布局属性中设置。作用和给控件添加 "fitsSystemWindows" 属性相同。