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)