背景图延伸到状态栏
2016-05-10 本文已影响1840人
jjkopen
尝试各种MD中
这里只实现图片延伸
- application里面主题是
android:theme="@style/AppTheme"
状态栏背景透明
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
将要延伸的布局设置属性
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的颜色设置为透明
...