因此,我的问题是,当我在应用程序中更改主题时,它在所有片段上都工作得很好,除了在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>
2条答案
按热度按时间vddsk6oq1#
要使用深色模式,请先更改主题父级:
如果你想替换应用中的颜色,你需要创建一个名为values-night的自定义值目录。
灯光模式:
暗模式:
hpxqektj2#
只需将底部导航视图
android:background="?attr/BottomMenuBackground"
更改为app:itemBackground="?attr/BottomMenuBackground"