Lollipop Transparent Navigation Bar (fitsSystemWindows = "true")

I am trying to get a translucent navigation bar with fitsSystemWindows = "true". It works great in kitkat, a translucent navigation bar shows content using android: clipToPadding = "false". But the Lollipop navigation bar does not show content.

Image: navigation box closed

This is xml:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawerLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:clipToPadding="false" tools:context=".MainActivity"> <!-- The main content view --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- Your main content --> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="8dp" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <Button android:layout_marginTop="24dp" android:background="@color/md_red_500" android:layout_gravity="center" android:layout_width="200dp" android:layout_height="800dp" /> </LinearLayout> <!-- The navigation drawer --> <com.videum.javier.myapplicationeliminmar.ScrimInsetsFrameLayout android:clipToPadding="false" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/scrimInsetsFrameLayout" android:layout_width="320dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@android:color/white" android:elevation="10dp" android:fitsSystemWindows="true" app:insetForeground="#4000"> <!-- Your drawer content --> <Button android:layout_marginTop="24dp" android:background="@color/md_red_500" android:layout_gravity="center" android:layout_width="200dp" android:layout_height="800dp" /> </com.videum.javier.myapplicationeliminmar.ScrimInsetsFrameLayout> 

This is the style (same v19 and v21):

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/md_red_500</item> <item name="colorPrimaryDark">@color/md_red_700</item> <item name="android:windowTranslucentNavigation">true</item> <item name="android:windowTranslucentStatus">true</item> </style> 

In the java file only the toolbar is supported.

I need fitsSystemWindows to always keep true.

Navigation Box works great in both versions. For example, if I add a button to it: the navigation box is open

+6
source share
2 answers

You did not indicate in the topic that you are taking responsibility for drawing behind the system bars:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> ... <item name="android:windowDrawsSystemBarBackgrounds">true</item> </style> 
0
source

Do not set fitsSystemWindow = "true" in DrawerLayout. By default, the system window is a window in the status bar and above the navigation bar, even if you set windosTransclucentStatus / Navigation = "true", which may make you think that "windows are now full-screen." If you fit this window, of course, the content will not expand to fit the entire screen.

-1
source

Source: https://habr.com/ru/post/981763/


All Articles