我在我的应用程序中使用导航抽屉,并尝试实现深色主题。当应用程序没有覆盖整个屏幕并且状态栏不透明时,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" />