Step1: Create a state class as shown below
public class StatusBarView extends View { private int mStatusBarHeight; public StatusBarView(Context context) { this(context, null); } public StatusBarView(Context context, AttributeSet attrs) { super(context, attrs); if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } } @Override public WindowInsets onApplyWindowInsets(WindowInsets insets) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ mStatusBarHeight = insets.getSystemWindowInsetTop(); return insets.consumeSystemWindowInsets(); } return insets; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),mStatusBarHeight); } }
Step 2: create a graphic gradient as shown below
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:type="linear" android:angle="135" android:endColor="#F34D80" android:startColor="#FF5858"/> </shape>
Step 3: create the layout as shown below
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <YOURPACKAGENAME.StatusBarView android:id="@+id/status_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/toolbar_bg_gradient"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:background="@drawable/toolbar_bg_gradient" android:elevation="0dp" android:minHeight="?attr/actionBarSize" app:contentInsetStartWithNavigation="0dp" app:popupTheme="@style/AppTheme.PopupOverlay" app:subtitleTextColor="@android:color/white" app:theme="@style/AppTheme.AppBarOverlay" app:titleTextColor="@android:color/white" /> </LinearLayout>
Step 4: create a style for action
<style name="AppTheme.NoActionBarMain" parent="Base.Theme.AppCompat.Light"> <item name="windowActionBar">false</item> <item name="android:windowDisablePreview">true</item> <item name="windowNoTitle">true</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowEnableSplitTouch">false</item> <item name="android:splitMotionEvents">false</item> <item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="lollipop">true</item> <item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent</item> <item name="android:colorForeground">@color/foreground_material_light</item> <item name="windowActionModeOverlay">true</item> <item name="actionModeStyle">@style/LywActionMode</item> </style> <style name="LywActionMode" parent="Base.Widget.AppCompat.ActionMode"> <item name="background">@color/colorPrimary</item> <item name="backgroundSplit">@color/colorPrimary</item> </style>
source share