Android Toolbar 透明化解决方案

本博文摘录了一套解决Toolbar透明化问题的方法,如果想看更详细的,请移步至原文:
http://www.jianshu.com/p/34a8b40b9308

一 、前言

网上已经有很多有关于系统状态栏的解决方案,这篇文章也不会有什么新奇的解决方案,都是本人经过自己试验,统计提炼出来的相对靠谱的一套解决方案.

如果是android大牛可以忽略本文,怕让您见笑.只面向小白,帮助小白减少摸索的时间.

二、效果图

废话少说,先展示效果图:

问题解决前:
Android Toolbar 透明化解决方案_第1张图片

问题解决后:

Android Toolbar 透明化解决方案_第2张图片

三、 实现步骤

1、引入v7包,并在布局里添加toolbar

  compile 'com.android.support:appcompat-v7:25.2.0'

2、在代码中设置透明化:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.setStatusBarColor(Color.TRANSPARENT);
        }

当然也可以通过主题来修改,需要在values、values-v19、values-v21目录下分别创建相应的主题:

values:

<style name="MDTheme" parent="AppTheme">
style>

values-v19

values-v21

3、给toolbar加上padding-top,toolbar代码如下:

        .support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="?attr/actionBarSize"
            android:paddingTop="@dimen/toolbar_padding_top"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

4、其中android:paddingTop=”@dimen/toolbar_padding_top”要在values中设为0dp,在values-v19中设为25dp,如下:

values

<dimen name="padding_top">0dpdimen>

values-v19

<dimen name="padding_top">25dpdimen>

到这里,或许有人就会问了,为什么是25dp呢?大家可以通过以下代码获取像素转成dp试试:

来自 stormzhang 的博文,想看详情的可以移至薄荷TOOLBAR(ACTIONBAR)的适配方案

public int getStatusBarHeight() {  
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }  
  return result;
}  

四、 总结

本博文主要摘录了一套解决Toolbar透明化问题的方法,帮助和我(博主本人)一样的小白减少摸索时间。本方法只是一个参考,网上也有很多的解决方案,如:

使用开源库SystemBarTint,这个库也挺不错的,可以动态改变系统状态栏颜色,但是作者已经2年没有维护了,现在技术更新迭代这么快,鬼知道这个库会不会出现什么问题,因此可以放弃使用了

你可能感兴趣的:(android)