The immersive status bar requires Android 4.4 or above to support
The first way:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // transparent status bar getWindow().addFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // transparent navigation bar getWindow().addFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); // set color getWindow().getDecorView().setBackground( new ColorDrawable(Color.RED)); // set height getWindow().getDecorView().setPadding(0, Util.dip2px(mContext, 30), 0, 0); }
The second way:
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; } }
How to use 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); }