1

我在我的应用程序中使用导航抽屉,并尝试实现深色主题。当应用程序没有覆盖整个屏幕并且状态栏不透明时,navigationView会自动着色为深色。但是当应用程序覆盖整个屏幕并且状态栏是透明的时,navigationView保持白色。即使应用程序覆盖整个屏幕并且状态栏是透明的,如何强制导航视图变暗?

我没有明确设置背景颜色或文本颜色,它使用默认值。

这是它的行为方式

布局代码如下所示:

<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:tools="http://schemas.android.com/tools"
        android:orientation="vertical"
        android:id="@+id/drawer_layout">

<!-- Some other views wrapped in RelativeLayout -->

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/mainnav"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        app:menu="@menu/mainmenu"
        android:layout_gravity="start"
        app:headerLayout="@layout/mainmenu_header"
        android:fitsSystemWindows="false"
        app:insetForeground="@null">

        <include android:id="@+id/mainmenuheader"
            layout="@layout/mainmenu_header"/>

    </com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>

Activity 使用透明状态栏使其全屏显示的样式如下所示:

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

最后在活动的清单中应用主题并将fitsSystemWindows设置为true:

<activity
    android:name=".map.MapActivity"
    android:screenOrientation="portrait"
    android:configChanges="uiMode"
    android:fitsSystemWindows="true"         
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" />
4

0 回答 0