You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中底部导航栏颜色修改及图标变色修复问题

问题描述

状态栏图标异常

在themes.xml中添加以下代码后:

<item name="android:windowBackground">@color/white</item>

状态栏红圈中的图标变为白色,请问如何将其改回灰色?

以下是当前themes.xml的代码:

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.CardHolderapp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/blue_200</item>
        <item name="colorPrimaryVariant">@color/blue_200</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/blue_200</item>
        <item name="colorSecondaryVariant">@color/blue_200</item>
        <item name="colorOnSecondary">@color/white</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor"> @android:color/transparent</item>
        <!-- Customize your theme here. -->


        <item name="android:windowLightStatusBar">
            true
        </item>

        <item name="android:windowBackground">@color/white
        </item>

        <item name="android:nav">@color/white
        </item>

    </style>
</resources>

另外,如何在Android Studio中修改底部导航栏选中项的颜色?


解决方案

一、恢复状态栏图标为灰色

你当前设置了android:windowLightStatusBar=true(该属性用于浅色状态栏下显示深色图标),但因为android:statusBarColor设为透明,状态栏继承了白色的windowBackground,系统适配逻辑出现异常导致图标变白,可通过以下两种方式修复:

  1. 设置状态栏为非透明浅色
    将android:statusBarColor改为和windowBackground一致的白色,确保系统正确识别浅色状态栏:
<item name="android:statusBarColor">@color/white</item>

保留android:windowLightStatusBar=true,图标即可恢复为灰色。

  1. 使用Material Components主题属性
    基于你使用的Material主题,推荐用框架专属属性替代系统属性,兼容性更好:
<item name="statusBarColor">@color/white</item>
<item name="android:windowLightStatusBar">true</item>

二、修改底部导航栏选中项颜色

方法1:通过主题全局配置

在themes.xml的主题中添加如下属性,直接定义选中/未选中状态的颜色:

<!-- 自定义选中项颜色(可选,不设置则默认使用colorPrimary) -->
<item name="bottomNavigationBarSelectedItemColor">@color/your_selected_color</item>
<!-- 未选中项颜色 -->
<item name="bottomNavigationBarUnselectedItemColor">@color/your_unselected_color</item>

方法2:布局文件中单独配置

找到布局里的BottomNavigationView标签,添加颜色选择器属性:

<com.google.android.material.bottomnavigation.BottomNavigationView
    ...
    app:itemIconTint="@drawable/bottom_nav_color_selector"
    app:itemTextColor="@drawable/bottom_nav_color_selector" />

然后在res/drawable目录下创建bottom_nav_color_selector.xml文件:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/your_selected_color" android:state_checked="true" />
    <item android:color="@color/your_unselected_color" android:state_checked="false" />
</selector>

内容的提问来源于stack exchange,提问作者oscar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:20:58