Android 设置DialogFragment上导航栏的颜色

Android 设置DialogFragment上导航栏的颜色,android,android-styles,android-dialogfragment,android-night-mode,Android,Android Styles,Android Dialogfragment,Android Night Mode,我有一个带有黑色导航栏的夜间主题,在应用程序主题参数中设计 <item name="android:navigationBarColor">@color/color_navbar</item> <item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item> 结果为白色: 我的基本应用程序样式是主题.MaterialComponents.DayN

我有一个带有黑色导航栏的夜间主题,在应用程序主题参数中设计

<item name="android:navigationBarColor">@color/color_navbar</item>
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>
结果为白色:

我的基本应用程序样式是
主题.MaterialComponents.DayNight.NoActionBar

我在安卓Q上测试它。

那么,在对话框片段上自定义导航栏颜色的方法是什么呢?如果有一种方法可以在显示dialogfragment时不更改导航栏的颜色,并使用显示此对话框的活动的颜色,则更好。

我找到了解决方案。只需将对话框高度从math_parent替换为wrap_内容,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);
        }
}
这对我很有用:

window?.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window?.navigationBarColor = ContextCompat.getColor(activity, R.color.navigation_bar_color)
在设置navigationBarColor之前,需要添加标志。标志(绘制)(系统)(条形)(背景),

window?.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window?.navigationBarColor = ContextCompat.getColor(activity, R.color.navigation_bar_color)