Android4.4状态栏透明方法,与工具栏颜色一致

本文介绍了一种在Android应用中实现状态栏透明效果的方法。通过在values-v19/styles.xml中配置特定样式,并在Java代码中调整页面设置,可以轻松实现状态栏的透明显示。此外,还提供了解决页面上移问题的方案。

在网上找了许多关于状态栏设置透明的方法,总是有这样那样的问题,最后自己瞎猫碰上死耗子,解决了,

不过这些也归功于网上开放的资源及众多博客。下面记录下透明方法,开发工具AndroidStudio

首先要在资源目录中建立一个values-v19目录,该目录中建立styles.xml文件

文件内容

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="colorControlNormal">@color/colorLunarTitle</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
    </style>
</resources>

几个color开头的项目是主题颜色设置部分,可以不理会,实现透明功能的是最后两项。

然后在Java代码中找到你想进行状态栏透明的页面,我的页面是继承自AppCompatActivity类

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置透明状态栏
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        ViewGroup contentFrameLayout = (ViewGroup) findViewById(Window.ID_ANDROID_CONTENT);
        if (contentFrameLayout != null) {
            View parentView = contentFrameLayout.getChildAt(0);
            if (parentView != null && Build.VERSION.SDK_INT >= 14) {
                parentView.setFitsSystemWindows(true);
            }
        }
        setContentView(R.layout.activity_main);
}

重写onCreate方法,先进行透明栏设置,然后再设置View,注意顺序。。。

到这里运行项目其实就已经透明化状态栏了,状态栏的颜色与页面的工具栏颜色一致了,但是会发现整个页面是上移的。。。

这里网上解决的办法就千奇百怪了,我都看不懂。。。然后就自己想吧,还别说,我想把工具栏变高,然后再Padding Top这个高度不就OK了,结果试了试,还不错

竟然成功了。。。

这是发现页面里面的View错位了,或者说工具栏盖住下面的View了,这时就需要在View的布局文件进行设置了

在页面的布局文件中的根节点中添加android:fitsSystemWindows="true"属性即可,如果不错位就不要添加这个属性了,添加了反而会起反作用。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值