Gradient status bar with BottomNavigationView

[亡魂溺海] 提交于 2020-01-10 05:24:06

问题


In my Application I want to show gradient status bar. Also i have used BottomNavigationView. So issue is when i am doing status bar gradient the bottom navigation bar of android overlaps the BottomNavigationView.

I have tried below solutions :

  1. how to set status bar background as gradient color or a drawable in android
  2. Google Now gradient/shadow on status bar & navigation bar
  3. How to apply gradient to status bar in android?
  4. How to remove button bar at the bottom screen

My code is as below :

-- > In java code i tried :

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Window w = getWindow();
            w.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
            w.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }

Issue :: With this java code i have achieved status bar issue but bottom navigation bar of android overlaps the BottomNavigationView.

-- > Also I have tried in style with :

<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:windowIsTranslucent">true</item>

Issue :: But getting some dark color status bar by this code.

-- > Also I have tried immersive mode of android :

View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_IMMERSIVE
                        // Set the content to appear under the system bars so that the
                        // content doesn't resize when the system bars hide and show.
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        // Hide the nav bar and status bar
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN);

Issue :: But it hides the status bar and bottom navigation which i don't want to.

******************* EDIT *******************

Tried in activity :

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        } else {

            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }

In layout :

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

In style :

 <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="android:windowActionBar">false</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:windowTranslucentNavigation">false</item>
        <item name="android:navigationBarColor">#000</item>
        <item name="colorControlNormal">#FFFFFF</item>
 </style>

Any kind of help would be appreciable. Thank you !


回答1:


You above code is working fine for me

You need to change your root layout

Make CoordinatorLayout as your root layout

Use

android.support.design.widget.CoordinatorLayout

Instead of

RelativeLayout

SEE the output using RelativeLayout

Output using android.support.design.widget.CoordinatorLayout



来源:https://stackoverflow.com/questions/52639958/gradient-status-bar-with-bottomnavigationview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!