http://blog.csdn.net/lovehong0306
布局
有两种形式设置、取消全屏的方法,之因此称做两种形式而不是两种方法,是由于这两种方式只是写法不一样,实质是同样的。spa
形式一:.net
//设置全屏orm
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
blog
//取消全屏get
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
it
形式二:方法
//设置全屏margin
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attr);top
//取消全屏
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attr);
全屏状态改成非全屏保持内容位置不变:
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);
这里有一个问题:
当设置了该flag以后取消全屏,部份内容被状态栏挡住(忽略状态栏高度,以屏幕右上角为原点计算布局)
加上代码getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);能够解决该问题,但再次设置全屏的时候状态栏不消失。
目前该问题还没有想到好的解决方案,
若是谁有思路解决了该问题,欢迎提供给我。