问题
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 :
- how to set status bar background as gradient color or a drawable in android
- Google Now gradient/shadow on status bar & navigation bar
- How to apply gradient to status bar in android?
- 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