美文网首页
2018-11-20透明式状态栏

2018-11-20透明式状态栏

作者: 魔鬼王中王 | 来源:发表于2018-11-20 09:05 被阅读0次

通过设置 Theme 主题设置状态栏透明

因为 API21 之后(也就是 android 5.0 之后)的状态栏,会默认覆盖一层半透明遮罩。且为了保持4.4以前系统正常使用,故需要三份 style 文件,即默认的values(不设置状态栏透明)、values-v19、values-v21(解决半透明遮罩问题:android:windowTranslucentStatus设置为false)。

我们在res下建适应不同版本的styles文件:


默认values:

<style name="ColorTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <!--在Android 4.4之前的版本上运行,直接跟随系统主题-->

        <item name="colorPrimary">@color/colorPrimary</item>

        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>

        <item name="colorAccent">@color/colorAccent</item>

    </style>


新建values-v19:

<!-- 状态栏和ToolBar颜色一致 -->

    <style name="ColorTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <item name="android:windowTranslucentStatus">true</item>

        <item name="android:windowTranslucentNavigation">true</item>

    </style>


新建values-v21:

<!-- 状态栏和ToolBar颜色一致 -->

    <style name="ColorTranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <item name="android:windowTranslucentStatus">false</item>

        <item name="android:windowTranslucentNavigation">true</item>

        <item name="android:statusBarColor">@android:color/transparent</item>

    </style>


加了三个styles文件以后 我们在manifest清单文件中,在activity引用"ColorTranslucentTheme"这个主题即可。

每个页面都有自己的主题,但是你会发现只这样做会把内容和状态栏交错重叠在一起,所以我们要在布局文件的顶部设置一个View来达到不重叠效果:

<View

    android:layout_width="match_parent"

    android:layout_height="25dp"

    android:background="#D53D3C"/>

当然,如果你的布局里面顶部图片想要延申到状态栏,那么就不用这个View了。

欢迎界面隐藏标题栏在setContentView(R.layout.activity_welcome);方法前添加代码:

getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.LayoutParams. FLAG_FULLSCREEN);

相关文章

网友评论

      本文标题:2018-11-20透明式状态栏

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