沉浸式状态栏需要Android4.4以上版本才支持
第一种方式:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // 透明状态栏 getWindow().addFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // 透明导航栏 getWindow().addFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); // 设置颜色 getWindow().getDecorView().setBackground( new ColorDrawable(Color.RED)); // 设置高度 getWindow().getDecorView().setPadding(0, Util.dip2px(mContext, 30), 0, 0); }
第二种方式:
public class FitSystemWindowRelativeLayout extends RelativeLayout { private int insetsBottom = 0; public FitSystemWindowRelativeLayout(Context context) { this(context, null); } public FitSystemWindowRelativeLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public FitSystemWindowRelativeLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setFitsSystemWindows(true); } @Override protected boolean fitSystemWindows(Rect insets) { insets.top = 0; return super.fitSystemWindows(insets); } public int getInsetsBottom() { return insetsBottom; } }
Activity的使用方式
@Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG, this.getClass().getSimpleName() + " onCreate() invoked!!"); super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); AppManager.getAppManager().addActivity(this); } @Override public void setContentView(int layoutResID) { FitSystemWindowRelativeLayout baseLayout = new FitSystemWindowRelativeLayout(this); ViewGroup rootView = (ViewGroup) getWindow().getDecorView(); rootView.removeAllViews(); mLayoutInflater = LayoutInflater.from(this); mLayoutInflater.inflate(layoutResID, rootView); super.setContentView(baseLayout); }