Android Toolbar 透明化解决方案
来源:互联网 发布:网络空间主权是我国 编辑:程序博客网 时间:2024/05/14 04:18
本博文摘录了一套解决Toolbar透明化问题的方法,如果想看更详细的,请移步至原文:
http://www.jianshu.com/p/34a8b40b9308
一 、前言
网上已经有很多有关于系统状态栏的解决方案,这篇文章也不会有什么新奇的解决方案,都是本人经过自己试验,统计提炼出来的相对靠谱的一套解决方案.
如果是android大牛可以忽略本文,怕让您贱笑.只面向小白,帮助小白减少摸索的时间.
二、效果图
废话少说,先展示效果图:
问题解决前:
问题解决后:
三、 实现步骤
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
<style name="MDTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">false</item></style>
values-v21
<style name="MDTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">false</item> <item name="android:statusBarColor">@android:color/transparent</item></style>
3、给toolbar加上padding-top,toolbar代码如下:
<android.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">0dp</dimen>
values-v19
<dimen name="padding_top">25dp</dimen>
到这里,或许有人就会问了,为什么是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年没有维护了,现在技术更新迭代这么快,鬼知道这个库会不会出现什么问题,因此可以放弃使用了
阅读全文
0 0
- Android Toolbar 透明化解决方案
- 页面静态化解决方案
- 操作系统虚拟化解决方案
- 网站HTML静态化解决方案
- ASP网站静态化解决方案研究
- freemarker网站纯静态化解决方案
- 大型网站页面静态化解决方案
- 大型门户网站静态化解决方案
- 财务大集中虚拟化解决方案
- 集团用户应用虚拟化解决方案
- 用友产品虚拟化解决方案
- 金蝶产品虚拟化解决方案
- 零售连锁行业SOA化解决方案
- WebView的碎片化解决方案:Crosswalk
- CocoaPods组件平滑二进制化解决方案
- Webpack工程化解决方案easywebpack
- 高并发静态页面化解决方案
- Citrix 桌面虚拟化解决方案与VMware桌面虚拟化解决方案对比
- ImportError: No module named caffe 的解决方案
- vim 打开多个文件
- java类加载机制
- 逆序数的求法
- css position
- Android Toolbar 透明化解决方案
- 【总结】嵌入式linux内核中Makefile、Kconfig、.config的关系及增加开机Hello World
- 解决POST数据时因启用Csrf出现的400错误
- java动态代理
- 小程序-swiper-item点击事件
- HTML DOM setTimeout() 方法
- 为什么只能在主线程中操作UI?为什么子线程中setText不报错?
- Keepalived+Nginx实现负载均衡高可用
- 微信小程序-分享页面到微信群或者好友携带分享者身份信息