我有带黑色导航栏的夜间主题,在App Theme参数中设置样式
<item name="android:navigationBarColor">@color/color_navbar</item>
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>
但是当我显示DialogFragment时,导航栏颜色变为白色。晚上眼睛很难打。我试图设置dialogfragment样式,但对我没有帮助:
public void onCreate(Bundle savedInstanceState) {
setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Theme_AppCompat_DayNight_Dialog);
super.onCreate(savedInstanceState);
}
我的基本应用程序样式为Theme.MaterialComponents.DayNight.NoActionBar
我在android Q上测试。那么在对话框片段上自定义导航栏颜色的方法是什么?或者更好,如果有一种方法可以在显示dialogfragment时不更改导航栏颜色,并使用来自显示此对话框的活动中的颜色。
我找到了解决方案。只需将对话框的高度从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);
}
}