Android

背景图延伸到状态栏

2016-05-10  本文已影响1840人  jjkopen

尝试各种MD中
这里只实现图片延伸

状态栏背景透明

将要延伸的布局设置属性

ViewGroup rootView = (ViewGroup) ((ViewGroup) findViewById(R.id.rootview));
rootView.setFitsSystemWindows(true); 
rootView.setClipToPadding(true);  

rootview是最上面的子布局,我的rootview是AppBarLayout,按需求切换


Toolbar未设置透明色,所以是蓝色.
AppBarLayout=Toolbar+TabLayout,AppBarLayout的背景是下面的图片

这样子整个布局就上去了,发现状态栏效果是透明的一层贴图,整个下面布局顶到了屏幕上边框.我们要的效果是图片延伸上去,控件照旧.所以就在原布局里面的最上面加一个和状态栏一样大小的透明view,然后设置背景图.

添加view后的代码(oncreate部分完整代码)###

//状态栏透明
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 生成一个状态栏大小的矩形
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
int statusBarHeight = getResources().getDimensionPixelSize(resourceId);
// 绘制一个和状态栏一样高的矩形
View statusView = new View(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,statusBarHeight);
statusView.setLayoutParams(params);
statusView.setBackgroundColor(Color.TRANSPARENT);
// 添加 statusView 到布局中
ViewGroup rootView = (ViewGroup) ((ViewGroup) findViewById(R.id.rootview));
rootView.addView(statusView, 0);// addView(ViewGroup view, index);
rootView.setFitsSystemWindows(true);
rootView.setClipToPadding(true);
...
// 顺便把Toolbar的颜色设置为透明
...

PS1. 学习自Android App 沉浸式状态栏解决方案##

PS2. 我的手机是小米,按网上的说法和其他手机状态栏显示有阴影效果的差距.##

PS3. 非原创,自己笔记用于小伙伴交流##

上一篇下一篇

猜你喜欢

热点阅读