Строка состояния градиента с BottomNavigationView
В моем приложении я хочу показать градиентную строку состояния. Также я использовал BottomNavigationView
, Так что проблема в том, когда я делаю градиент строки состояния, нижняя панель навигации Android перекрывает BottomNavigationView
,
Я попробовал следующие решения:
- как установить фон строки состояния в качестве цвета градиента или рисовать в Android
- Google Now градиент / тень на строке состояния и панели навигации
- Как применить градиент к строке состояния в Android?
- Как убрать панель кнопок внизу экрана
Мой код, как показано ниже:
- > В коде Java я попытался:
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);
}
Проблема:: С помощью этого Java-кода я достиг проблемы в строке состояния, но нижняя панель навигации Android перекрывает BottomNavigationView
,
- > Также я попробовал в стиле с:
<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:: Но с помощью этого кода получается строка состояния темного цвета.
- > Также я попробовал режим погружения 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:: Но он скрывает строку состояния и нижнюю навигацию, что я не хочу.
******************* РЕДАКТИРОВАТЬ *******************
Пробовал в деятельности:
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);
}
В макете:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
Стильно:
<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>
Любая помощь будет заметна. Спасибо!
1 ответ
Вы выше код работает хорошо для меня
Вам нужно изменить корневой макет
Делать CoordinatorLayout
как ваш корневой макет
использование
android.support.design.widget.CoordinatorLayout
Вместо
RelativeLayout
СМОТРИТЕ вывод, используя RelativeLayout
Вывод с использованием android.support.design.widget.CoordinatorLayout