如何将Android设备导航栏设为白色且避免导航栏图标也变为白色
Android白色导航栏图标不可见解决方案
问题原因
将导航栏背景设置为白色后,系统默认导航栏图标为浅色样式(适配深色背景场景),因此会出现和白色背景重合、无法查看的问题,将导航栏图标切换为深色样式即可解决。
适配前提
修改导航栏图标颜色的API仅在**Android 8.0(API Level 26)**及以上系统版本支持,低于该版本的系统无法修改导航栏图标颜色,建议低版本场景下不要使用纯白色导航栏背景。
动态代码实现(Java)
在Activity的onCreate方法中添加如下代码即可:
Window w = this.getWindow(); // 设置导航栏为白色,直接传入int颜色值无需调用parseColor w.setNavigationBarColor(0xFFFFFFFF); // Android 8.0及以上切换导航栏图标为深色 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { View decorView = w.getDecorView(); int uiFlag = decorView.getSystemUiVisibility(); uiFlag |= View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; decorView.setSystemUiVisibility(uiFlag); }
静态主题配置
如果需要全局生效,可在对应API版本的主题配置文件中添加属性:
在res/values-v26/styles.xml的App主题节点下添加:
<!-- 导航栏白色背景 --> <item name="android:navigationBarColor">@android:color/white</item> <!-- 导航栏图标使用深色样式 --> <item name="android:windowLightNavigationBar">true</item>
特殊适配说明
部分定制ROM对导航栏样式有额外管控,若上述原生方案不生效,可到对应ROM厂商的开放平台查询专属适配接口。
内容的提问来源于stack exchange,提问作者Fprojects Technology
相关产品推荐
相关产品推荐

