Строка состояния градиента с BottomNavigationView - PullRequest
0 голосов
/ 04 октября 2018

В моем приложении я хочу показать градиентную строку состояния.Также я использовал 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 :: Но скрывает строку состояния и нижнюю навигацию, чего я не хочу.

******************* РЕДАКТИРОВАТЬ *******************

ТриD в деятельности:

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 Ответ

0 голосов
/ 04 октября 2018

Вы выше код работает хорошо для меня

Вам нужно изменить корневой макет

Сделать CoordinatorLayout в качестве корневого макета

Используйте

android.support.design.widget.CoordinatorLayout

Вместо

RelativeLayout

СМОТРИТЕ на выходе, используя RelativeLayout

enter image description here

Вывод с использованием android.support.design.widget.CoordinatorLayout

enter image description here

...