关于Android主题splash全屏和主页面的沉浸式状态栏

本文分享了在Android项目中如何自定义主题实现Activity全屏显示及沉浸式状态栏的经验。通过设置特定主题并在setContentView之前应用,可以隐藏标题和状态栏。此外,介绍了如何利用style标签来创建自定义主题,子主题可以继承并覆盖父主题的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做项目需要经常修改Android主题,对于每个Activity都进行自定义主题设置,下面讲一下对于主题的一些使用心得。
1. 全屏显示activity
由于studio中继承AppCompatActivity,所以在setContentView方法前才用getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);这种方法可能不会起作用,需要自己在主题中进行设置。

<style name="AppTheme2" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:background">@drawable/transparent</item>
        //设置全屏的属性
        <item name="android:windowFullscreen">true</item>
        <!--<item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>-->
        <item name="android:windowContentOverlay">@android:color/transparent</item>
        <item name="android:windowBackground">@color/background</item>
        //设置沉浸式状态栏的colorPrimaryDark属性,SDK19之后起作用
        <!--<item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>-->
        <item name="colorAccent">@color/colorAccent</item>
    </style>

全屏显示会隐藏标题和状态栏。如果想隐藏状态栏使用一个单独的代码

WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
        localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);

这个方法可以隐藏状态栏。这些代码放在setContentView之前
2、自定义主题
利用style标签,自定义name,选择继承一个parent,就会有parent的所有属性,和java中的继承一致。子类可以覆盖重写父类的属性,也可以拥有特有的属性。

 <style name="AppTheme.My" parent="AppTheme">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/transparent</item>
    </style>
    <style name="AppTheme.My2" parent="AppTheme">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/black</item>
    </style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值