QMUI_Android状态栏相关

热门标签

,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

最近用了一下QMUI_Android这个整体的ui框架,详细的不多说有很多的解释,今天想聊一下状态栏的问题。
如果你继承了QMUIActivity这个activity的话,那么你的状态栏就会跟着背景颜色一样。因为有个需求状态栏的颜色要蓝色的,但是整个界面的背景是白色的,一开始想的是自己处理一下就可以了。结果多出来一块跟状态栏一样高的白色的横条就像下边这样

QMUI_Android状态栏相关
白条.png

因为我们了解setFitsSystemWindows这个方法是设置不是直接到状态栏的 我们贴一下这个方法

 /**
     * Sets whether or not this view should account for system screen decorations
     * such as the status bar and inset its content; that is, controlling whether
     * the default implementation of {@link #fitSystemWindows(Rect)} will be
     * executed.  See that method for more details.
     *
     * <p>Note that if you are providing your own implementation of
     * {@link #fitSystemWindows(Rect)}, then there is no need to set this
     * flag to true -- your implementation will be overriding the default
     * implementation that checks this flag.
     *
     * @param fitSystemWindows If true, then the default implementation of
     * {@link #fitSystemWindows(Rect)} will be executed.
     *
     * @attr ref android.R.styleable#View_fitsSystemWindows
     * @see #getFitsSystemWindows()
     * @see #fitSystemWindows(Rect)
     * @see #setSystemUiVisibility(int)
     */
    public void setFitsSystemWindows(boolean fitSystemWindows) {
        setFlags(fitSystemWindows ? FITS_SYSTEM_WINDOWS : 0, FITS_SYSTEM_WINDOWS);
    }

所以我在Activity设置false但是运行的还是有一条。fragment设置也是这样。百思不得其解。
直到我看了一下QMUIActivity他的源码,找到了原因


    @Override
    public void setContentView(int layoutResID) {
        SwipeBackLayout swipeBackLayout = SwipeBackLayout.wrap(this,
                layoutResID, dragBackEdge(), mSwipeCallback);
//就是这个地方,
        if (translucentFull()) {
            swipeBackLayout.getContentView().setFitsSystemWindows(false);
        } else {
            swipeBackLayout.getContentView().setFitsSystemWindows(true);
        }
        mListenerRemover = swipeBackLayout.addSwipeListener(mSwipeListener);
        super.setContentView(swipeBackLayout);
    }

接下来我们看一下translucentFull()这个方法


    /**
     * Immersive processing
     *
     * @return if true, the area under status bar belongs to content; otherwise it belongs to padding
     */
    protected boolean translucentFull() {
        return false;
    }

所以这个方法是控制是不是状态栏跟背景一个颜色的方法。所以我再MainActivity重写一下这个方法,返回true
那么这个顶部那个白天就没了。下边看一下效果。

QMUI_Android状态栏相关
没有白条.png

所以整理一下。提醒一下大家遇到这个问题的时候可以不遇到这个坑。

 

标签:

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术狗|博客
原文地址:《QMUI_Android状态栏相关》 发布于2019-10-17

分享到:
赞(0)

评论 抢沙发

3 + 5 =


QMUI_Android状态栏相关

长按图片转发给朋友

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录