Установить цвет для панели навигации в DialogFragment - PullRequest
0 голосов
/ 26 мая 2020

У меня есть ночная тема с черной панелью навигации, оформленная в параметрах темы приложения

<item name="android:navigationBarColor">@color/color_navbar</item>
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>

enter image description here

, но когда я показываю DialogFragment, тогда цвет панели навигации поменял на белый. Ночью он сильно бьет по глазам.
Я попытался установить стиль диалогового фрагмента, но мне это не помогло:

public void onCreate(Bundle savedInstanceState) {
    setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Theme_AppCompat_DayNight_Dialog);
    super.onCreate(savedInstanceState);
}

и результат белый:
enter image description here

Мой базовый стиль приложения - Theme.MaterialComponents.DayNight.NoActionBar
Я тестирую его на android Q.
Итак, как можно настроить цвет навигационной панели во фрагменте диалогового окна? Или лучше, если есть способ не менять цвет панели навигации при отображении фрагмента диалога и использовать цвет из действия, которое показало этот диалог.

1 Ответ

0 голосов
/ 09 июня 2020

Я нашел решение. Просто замените высоту диалога с math_parent на wrap_content, и android автоматически будет использовать в dialogfragment цветовую схему приложения для панели навигации.

@Override
public void onStart() {
        super.onStart();
        if (getDialog() != null) {
            int width = ViewGroup.LayoutParams.MATCH_PARENT;
            int height = ViewGroup.LayoutParams.WRAP_CONTENT;//previously I used MATCH_PARENT here 
            getDialog().getWindow().setLayout(width, height);
            getDialog().setOnKeyListener(onKeyListener);
        }
}
...