在DialogFragment上为导航栏设置颜色

问题描述 投票:0回答:1

我有带黑色导航栏的夜间主题,在App Theme参数中设置样式

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

enter image description here

但是当我显示DialogFragment时,导航栏颜色变为白色。晚上眼睛很难打。我试图设置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上测试。那么在对话框片段上自定义导航栏颜色的方法是什么?或者更好,如果有一种方法可以在显示dialogfragment时不更改导航栏颜色,并使用来自显示此对话框的活动中的颜色。

android android-styles android-dialogfragment android-night-mode
1个回答
0
投票

我找到了解决方案。只需将对话框的高度从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);
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.