美文网首页
[android]状态栏/虚拟按钮透明,沉浸

[android]状态栏/虚拟按钮透明,沉浸

作者: 黑森林中的小木屋 | 来源:发表于2018-01-10 13:49 被阅读0次

本文参考:薄荷app的toolbar适配方案
只考虑安卓4.4及以上的版本

介绍几个概念:
<item name="android:windowTranslucentStatus">true</item> 设置状态栏透明,并且布局可以侵入到状态栏(4.4之后才有)
<item name="android:windowTranslucentNavigation">false</item>设置虚拟按键透明,并且布局可以侵入到虚拟按键,(5.0之后才有)
注:5.0之后设置第一个,并不会显示透明,而是半透明状态,这是需要指定状态栏的颜色为透明:
<item name="android:statusBarColor">@android:color/transparent</item>
最终效果类似:

20160812151810177.png

在应用或者activity的主题中添加以上以上两个item,那么布局就可以侵入到状态栏/虚拟按键。这时状态栏/虚拟按键和布局是叠加的,可能会造成,状态栏/虚拟按键遮挡了布局的内容。这时需要用到另外一个属性
android:fitsSystemWindows=true :自动为控件添加一个状态栏高度的padding(需要添加到根View才起作用)

如果不能添加到根view的话,可以变通一下,手动给控件添加一个paddingTop,大小为0dp(4.4之前)或者25dp(4.4之后)(源码中statusBar的高度)

具体做法:
1、在values文件夹下,新建两个文件夹values-v19(对应4.4)和values-v21(对应5.0)
2、values-v19下新建两个xml文件:dimen.xmlstyle.xml
dimen.xml文件内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="toolbar_pading_top">25dp</dimen>
</resources>

style.xml文件内容:

<style name="xxx"  parent="xxx">
       ...
        <!--设置状态栏透明-->
        <item name="android:windowTranslucentStatus">true</item>
    </style>

3、在values-v21下新建一个style.xml文件
内容:

<style name="xxx"  parent="xxx">      
          ...
        <!--设置状态栏透明-->
        <item name="android:windowTranslucentStatus">true</item>
        <!--设置虚拟按钮透明-->
        <item name="android:windowTranslucentNavigation">true</item>
        <!--Android 5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色-->
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>

4、在布局文件的根view中使用android:paddingTop="@dimen/toolbar_pading_top"(虚拟按键因为可能有,可能无,所以要在代码中判断后才能设置padding大小,具体在此不做讨论)

相关文章

  • [android]状态栏/虚拟按钮透明,沉浸

    本文参考:薄荷app的toolbar适配方案只考虑安卓4.4及以上的版本 介绍几个概念: true 设置状态栏透...

  • AndroidView

    Android 沉浸式 (透明) 状态栏适配 Android 沉浸式状态栏仿淘宝、京东拖拽商品详情(可嵌套View...

  • Android面试题整理

    一、View树/View的绘制流程Android View的绘制流程 二、透明状态栏Android 系统状态栏沉浸...

  • 沉浸式

    google在Android4.4以后提供了设置沉浸式状态栏的方法 true 设置状态栏为透明android:fi...

  • Android 沉浸式状态栏原理

    首先: android 的透明状态栏和沉浸式是两个不同的东西,但是又相互交错,不要混淆。透明状态栏是指将状态栏设置...

  • 透明statusbar的一些小建议

    大家都知道android4.4出现了沉浸式状态栏一说,5.0以上则是透明状态栏,其实呢都是透明状态栏。最近公司要求...

  • Flutter透明状态栏

    flutter应用默认的状态栏是半透明的,如何将其变为完成透明的沉浸式状态栏 注意:这种方法只适用于Android...

  • 关于 Android 状态栏的适配总结

    1.要求状态栏透明,我们的内容布局延伸到系统状态栏,就是人们口中说的沉浸式状态栏: Android 5.0 及其以...

  • Android 沉浸式风格(为毛叫沉浸式这么唬人)

    一、参考 1、Android 沉浸式状态栏攻略 让你的状态栏变色吧2、android设置状态栏颜色(沉浸式状态栏)...

  • Android 之低版本高版本实现沉浸式状态栏

    沉浸式状态栏确切的说应该叫做透明状态栏。一般情况下,状态栏的底色都为黑色,而沉浸式状态栏则是把状态栏设置为透明或者...

网友评论

      本文标题:[android]状态栏/虚拟按钮透明,沉浸

      本文链接:https://www.haomeiwen.com/subject/dhkonxtx.html