2018-11-20透明式状态栏

通过设置 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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 远方的云, 已然消逝。 远方的诗, 在我的指尖 细细揉碎: 瞬间的闪亮, 能否点燃, 斑斓的星光?
    野菊芬芳阅读 1,382评论 0 1
  • 10天单点突破法做睡眠引导-day1 1.每日对宝宝做心里建设 2.实施方式:延后满足时长每日累计增加5分钟、不干...
    AI成长家阅读 1,679评论 0 0

友情链接更多精彩内容