让Fragment的layout也能够实现沉浸(透明)状态栏

起因:想做一个自用的记账App,由于本人没有UI天赋,审美也是呵呵。所以就借鉴了很多挖财记账的UI,但是在记账的部分想要实现沉浸式就出现问题了。

问题描述:一共两个页面间的协调,第一个页面做了侧滑抽屉,在布局里放了ViewPager 第二个页面通过Fragment来装载布局。

问题解决:是由于第一个页面的主布局有android:fitSystemWindows属性。所以导致子布局不能实现完美沉浸(状态栏会保持第一个页面主布局的样式)。

附上页面布局:

第一个页面:




    

    
        

        
        

        
    


                
    

第二个页面:


    
        
        
            
                
                    
                    
                
                
            

            
                
                    
                    
                
                
            

            
                
                    
                    
                
                
            

        

        

问题效果图:(状态栏是主页面的状态栏样式)

让Fragment的layout也能够实现沉浸(透明)状态栏_第1张图片


于是去掉主页面根布局的android:fitSystemWindows属性

发现变这样了:

让Fragment的layout也能够实现沉浸(透明)状态栏_第2张图片


可以看到,状态栏任然不是Fragment的图片沉浸,是主页面的RelativeLayout的样式了。

于是我们再去掉RelativeLayout的android:fitSystemWindows属性。再次编译

让Fragment的layout也能够实现沉浸(透明)状态栏_第3张图片


成功!

总结:要实现Fragment的沉浸很简单,在主Activity中设置Activity的沉浸代码与工作,然后重点是子布局的所有根布局都不能有android:fitSystemWindows属性,注意是所有包含子布局的布局都不能有,比如我这里的RelativeLayout和DrawerLayout两者只要有一个有就不会有正常的沉浸效果,最终的状态栏效果是按照最顶端拥有android:fitSystemWindows属性的布局的样式所决定!


你可能感兴趣的:(Android,Android中遇到的坑,Android,实践)