Строка состояния градиента с BottomNavigationView

В моем приложении я хочу показать градиентную строку состояния. Также я использовал BottomNavigationView, Так что проблема в том, когда я делаю градиент строки состояния, нижняя панель навигации Android перекрывает BottomNavigationView,

Я попробовал следующие решения:

  1. как установить фон строки состояния в качестве цвета градиента или рисовать в Android
  2. Google Now градиент / тень на строке состояния и панели навигации
  3. Как применить градиент к строке состояния в Android?
  4. Как убрать панель кнопок внизу экрана

Мой код, как показано ниже:

- > В коде 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

введите описание изображения здесь

Другие вопросы по тегам