android 为什么不更改BottomNavigationView的颜色?

92dk7w1h  于 2023-01-24  发布在  Android
关注(0)|答案(2)|浏览(193)

因此,我的问题是,当我在应用程序中更改主题时,它在所有片段上都工作得很好,除了在MainActivity BottomNavigationView中。
我认为这不是使用黑暗的主题色,只是使用只有轻的主题色,我不知道为什么。
我尝试了Stackoverflow的一些解决方案,但我无法找出问题所在。
这是我的主要活动

xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/nav_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="0dp"
        android:background="?attr/BottomMenuBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/bottom_nav_menu"
        app:itemIconTint="@color/bnv_tab_item_foreground"
        app:itemTextColor="@color/bnv_tab_item_foreground" />

    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toTopOf="@+id/nav_view"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/mobile_navigation" />

</androidx.constraintlayout.widget.ConstraintLayout>```

This is my style based on attributes

    <resources>
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="colorPrimary">#e0e0e0</item>
            <item name="colorPrimaryDark">#000000</item>
            <item name="colorAccent">#9e9e9e</item>
            <item name="backgroundColor">#eeeeee</item>
            <item name="warningButtonColor">#b71c1c</item>
            <item name="okButtonColor">#2196F3</item>
            <item name="textColor">#000000</item>
            <item name="disabledTextColor">#BDBDBD</item>
            <item name="bottomMenuTextColor">#9e9e9e</item>
            <item name="BottomMenuBackground">#e0e0e0</item>
            <item name="BottomMenuTintColor">#000000</item>
            <item name="BottomMenuCheckedTextColor">#ffffff</item>
            <item name="dividerColor">#000000</item>
        </style>

        <style name="darkTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="colorPrimary">#212121</item>
            <item name="colorPrimaryDark">#000000</item>
            <item name="colorAccent">#202020</item>
            <item name="backgroundColor">#101010</item>
            <item name="warningButtonColor">#b71c1c</item>
            <item name="okButtonColor">#2196F3</item>
            <item name="disabledTextColor">#424242</item>
            <item name="textColor">#fafafa</item>
            <item name="bottomMenuTextColor">#424242</item>
            <item name="BottomMenuBackground">#000000</item>
            <item name="BottomMenuTintColor">#dd2c00</item>
            <item name="BottomMenuCheckedTextColor">#dd2c00</item>
            <item name="dividerColor">#dd2c00</item>
        </style>
    </resources>

And finally my selector of checked button

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="?attr/BottomMenuCheckedTextColor" />
    <item android:state_checked="false" android:color="?attr/bottomMenuTextColor"/>
</selector>
vddsk6oq

vddsk6oq1#

要使用深色模式,请先更改主题父级:

<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
  <item name="colorPrimary">@color/colorPrimary</item>
  <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  <item name="colorAccent">@color/colorAccent</item>
</style>

如果你想替换应用中的颜色,你需要创建一个名为values-night的自定义值目录。

灯光模式:

<color name="colorPrimary">#e0e0e0</color>
<color name="colorPrimaryDark">#000000</color>
<color name="colorAccent">#9e9e9e</color>

暗模式:

<color name="colorPrimary">#212121</color>
<color name="colorPrimaryDark">#000000</color>
<color name="colorAccent">#202020</color>
hpxqektj

hpxqektj2#

只需将底部导航视图android:background="?attr/BottomMenuBackground"更改为app:itemBackground="?attr/BottomMenuBackground"

相关问题