CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar实现渐变透明的状态栏

在之前的一篇博文里面我已经说明了CoordinatorLayout使用过程中遇到的问题,之后又发现结合CollapsingToolbarLayout使用时的另一个问题。CollapsingToolbarLayout里面的ImageView为背景并不能将状态栏覆盖。在网上查的方法感觉比较费劲,自己试了多次之后发现下面的这种处理算是最简单的了。
大概的思想是:

1.给Activity界面设置主题为透明状态栏的主题,因为5.0系统的限制即使设置透明状态栏之后状态栏上面仍然有一层浅灰色的背景,所以增加values-21的处理。

2.给CollapsingToolbarLayout里面的布局设置marginTop为-15dp目的是为了让进入界面 之后,布局的背景能够向上覆盖到状态栏(可以是背景图片或者背景布局)。

fitsSystemWindows属性是为了让状态栏的颜色和该布局的颜色相同

----上面的-15dp的处理。是因为即使设置透明状态栏,刚进入界面的时候状态栏的颜色也是没有的,因为CollapsingToolbarLayout里面的背景图没有被拉上去。

3.给CollapsingToolbarLayout设置正常显示时状态栏的颜色

关键的代码:

1.给CollapsingToolbarLayout添加如下属性:

app:contentScrim="?attr/colorPrimary"
app:statusBarScrim="?attr/colorPrimary"

2.给CollapsingToolbarLayout里面的第一个child布局设置如下属性:

android:layout_marginTop="-15dp"
android:fitsSystemWindows=“true”
3.为当前Activity设置主题:

android:theme="@style/FullTheme"

3.1在values的styles.xml里面配置

3.2在values-v21的styles.xml里面配置

效果如下

具体代码如下:

xmlns:app=“http://schemas.android.com/apk/res-auto”
android:id="@+id/main_content"
android:layout_width=“match_parent”
android:layout_height=“match_parent”>










    


        

            

            

                

                    

                    
                

                

                    

                    

                    
                
            
        

        
        
        
        
        

        
        
        
        
        

        
        

        

            

                
            

            

            

                
            

        

    







    

        

            

            

        

        
    


参考文章:

Android 状态栏全透明策略

android状态栏一体化(沉浸式状态栏)

android状态栏颜色修改

作者:a_yue10
来源:CSDN
原文:https://blog.csdn.net/a_yue10/article/details/78691288
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Android,控件属性栏目)