有时候当我们设置Activity全屏后,希望点击屏幕时状态栏浮动显示在界面上,而不是将界面挤下去。可以用如下方法实现:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//去掉标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
//隐藏状态栏
hideStatusBar(true);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_hide).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
hideStatusBar(true);
}
});
findViewById(R.id.btn_show).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
hideStatusBar(false);
}
});
}
private void hideStatusBar(boolean isHide)
{
if (isHide)
{
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(lp);
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
} else
{
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attr);
//如果不注释下面这句话,状态栏将把界面挤下去
/*getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);*/
}
}
}
上面这种方法适用于所有版本的API,Android3.0以上的可使用View类提供的setSystemUiVisibility和getSystemUiVisibility方法。
官方文档:http://developer.android.com/training/system-ui/status.html