Android 设置应用的底部导航栏(虚拟按键)背景颜色

微信小程序--动态设置导航栏颜色 (navigationBarBackgroundColor) 如果导航栏被隐藏或者页面没有设置导航栏,设置导航栏颜色将会失败。如果尝试了以上方法仍然无法解决问题,建议检查微信小程序开发工具的版本,确保使用的是最新稳定版,或者尝试重启开发工具和手机。检查是否有其他代码逻辑或插件影响了导航栏的设置。可能存在其他代码或插件对导航栏进行了修改或覆盖导致设置失败。确保使用有效的十六进制颜色值或颜色名称,并且以字符串形式传入。中调用,或者在需要设置导航栏颜色的事件触发时调用。来启用原生导航栏样式,并获得设置导航栏颜色的权限。检查是否有权限设置导航栏颜色。文件中,可以通过设置。 阅读详情
AI摘要

本文介绍如何通过PhoneWindow类中的setNavigationBarColor方法调整Android 5.0及以上版本设备的虚拟导航键背景色,以实现应用界面风格的一致性。

Android手机机型种类繁多,但是虚拟按键也就是底部的导航栏,不外乎两种设计方式,一种是作为虚拟按键设计到屏幕内部,一种是作为系统按键设计到屏幕外面。



对于按键在屏幕内部的机型,因为虚拟按键也是屏幕内容的一部分,它也实际占据屏幕一定的高度,在系统应用中虚拟按键默认呈现的都是透明的背景色,但是在用户应用中如果未设置虚拟按键的背景颜色,它默认呈现的多为黑色。


但是我们可能会看到有些App为了统一自己的风格样式,标题栏和底部的虚拟按键的颜色是一致的,他们是怎么实现的呢?


状态栏和标题栏的颜色设置可以通过theme主题来控制,这里不做介绍了,下面说一下如何改变底部虚拟按键的背景颜色:

在Window类中有一个方法可以设置虚拟按键的背景颜色

public abstract void setNavigationBarColor(@ColorInt int color);
大家看到了这是一个抽象方法,那么Window的子类有没有实现这个方法呢,Window有一个子类PhoneWindow它实现了父类所有的抽象方法
@Override
    public void setNavigationBarColor(int color) {
        mNavigationBarColor = color;
        mForcedNavigationBarColor = true;
        if (mDecor != null) {
            mDecor.updateColorViews(null, false /* animate */);
            mDecor.updateNavigationGuardColor();
        }
    }
这便是修改手机虚拟按键背景颜色的实现方法了
我们如何得到PhoneWindow对象呢?

//在Activity中有这样一个Api:
public Window getWindow() {
    return mWindow;
}
这个mWindow对象在Activity的attach方法中进行了实例化:
final void attach(Context context, ActivityThread aThread,
            Instrumentation instr, IBinder token, int ident,
            Application application, Intent intent, ActivityInfo info,
            CharSequence title, Activity parent, String id,
            NonConfigurationInstances lastNonConfigurationInstances,
            Configuration config, String referrer, IVoiceInteractor voiceInteractor,
            Window window) {
        attachBaseContext(context);

        mFragments.attachHost(null /*parent*/);

        mWindow = new PhoneWindow(this, window);
        //....省略若干行       
    }
mWindow正是PhoneWindow的实例,到此我们就可以在Activity中改变系统虚拟按键的背景颜色了
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getWindow().setNavigationBarColor(Color.parseColor("#1bb5d7"));
            //getWindow().setNavigationBarColor(getResources().getColor(R.color.black));
            //getWindow().setNavigationBarColor(Color.BLUE);
}
这里有一个系统版本的判断,因为setNaviationBarColor(int color)这个Api是在API Level 21才出现的,即Android 5.0及以上的机型才可以使用该Api。 (API Level与Android版本对照表)
由于我们一个项目中可能会有很多Activity,所以建议把修改虚拟按键的逻辑放在抽取的BaseActivity的onCreate()方法中。

android 系统隐藏和显示虚拟按键的几种方法 阅读详情

相关推荐

BottomSheetDialogFragment底部导航栏颜色调整与适配全攻略

在Android应用开发中,底部弹窗与系统导航栏的视觉割裂是常见的适配难题,尤其当BottomSheetDialogFragment遇上深色模式或Android 15强制edge-to-edge时,navigationBarColor等传统写法往往力不从心。要解决底部导航栏颜色不一致,需理解Dialog Window、系统栏属性及界面亮度的协同机制,掌握WindowInsets、对比遮罩关闭等关键技术。本文从基础原理出发,剖析不同Android版本、导航方式差异,并给出封装模板和踩坑指引,帮助开发者让弹层与

weixin_31815843的博客 225

navigationBarTextStyle动态修改状态栏颜色

手机状态栏就是这个区域 近期项目有一个需求 , 手机状态栏是需要进行动态修改颜色的 虽然他也就只有两个取值,一个白色一个黑色,翻阅文档 ,uniapp和微信小程序都写了相关的在页面动态修改的方法 ,但是代码写上去却不生效。 onPageScroll(e) { if (e.scrollTop > 360) { this.isTopBg = true wx.setNavigationBarColor({ frontColor: "#000000", }) } else

weixin_47873655的博客 7761

Android 系统中修改 SystemUI 导航栏默认背景色

在 Android 开发中,系统导航栏是用户与设备进行交互的重要界面元素之一。为了提供更好的用户体验,开发人员可能需要修改导航栏的默认背景色以适应特定的应用场景。打开 Android Studio,选择 “File -> New -> New Project”,按照向导指引设置项目的名称和其他相关信息,并确保选择了合适的最低 SDK 版本。完成以上步骤后,你可以编译并运行应用程序,查看导航栏背景色的修改效果。文件中定义你想要的导航栏颜色,并将主题应用到应用程序的 Activity 上即可实现这一目标。

2301_79326930的博客 1250

uni.setNavigationBarColor 设置字体颜色及背景色无效的四个原因

uni.setNavigationBarColor 设置字体颜色及背景色无效的四个原因。1.只设置了背景色,背景色无效。 2. 字体颜色只支持小写的十六进制,否则字体颜色和背景色均无效

qq_40259123的博客 4960

【微信小程序】常用API-动态设置导航条

通过使用微信小程序提供的动态设置导航条的API,开发者可以灵活地改变导航条的样式,提升用户体验。希望本文能够帮助你在微信小程序开发中更好地利用这些API,打造更加友好和响应的应用程序。

墨夶的博客 1276

comsol-声学

COMSOL多物理场仿真软件以高效的计算性能和杰出的多场耦合分析能力实现了精确的数值仿真,已被广泛应用于各个领域的科学研究以及工程计算,为工程界和科学界解决了复杂的多物理场建模问题。COMSOL内嵌的声学模块可以方便地进行多孔声学和粘热声学的模拟仿真。软件数值计算得到的云图,可以将声压、速度、声强以及声能耗散等结果可视化,十分有利于学生对声学的学习和理解。将COMSOL仿真引入实验当中,通过软件的可视化处理有效直观的展示复杂物理场和集合模型仿真的流程,与实验数据结合,使得文章内容具有说服力、预见性和新颖性。

y2715163545的博客 2373

android 虚拟键背景,Android 设置应用的底部导航栏(虚拟按键)背景颜色

Android手机机型种类繁多,但是虚拟按键也就是底部的导航栏,不外乎两种设计方式,一种是作为虚拟按键设计到屏幕内部,一种是作为系统按键设计到屏幕外面。对于按键在屏幕内部的机型,因为虚拟按键也是屏幕内容的一部分,它也实际占据屏幕一定的高度,在系统应用中虚拟按键默认呈现的都是透明的背景色,但是在用户应用中如果未设置虚拟按键的背景颜色,它默认呈现的多为黑色。但是我们可能会看到有些App为了统一自己的风...

weixin_39646405的博客 3115

用Python玩转共现分析:从NLTK到热力图可视化(附完整代码)

本文详细介绍了如何使用Python进行文本共现分析,从NLTK基础文本处理到构建共现矩阵,并实现热力图可视化。通过完整的代码示例,帮助数据分析师和开发者掌握这一揭示词语间关联网络的实用NLP技术,快速从文本中提取语义关系和主题结构。

weixin_29313817的博客 347

(转)Android 设置应用的底部导航栏(虚拟按键)背景颜色

原地址:https://blog.youkuaiyun.com/github_2011/article/details/74908545   Android手机机型种类繁多,但是虚拟按键也就是底部的导航栏,不外乎两种设计方式,一种是作为虚拟按键设计到屏幕内部,一种是作为系统按键设计到屏幕外面。 对于按键在屏幕内部的机型,因为虚拟按键也是屏幕内容的一部分,它也实际占据屏幕一定的高度,在系统应用中虚...

Elvis写代码 5315

Zemax显微镜设计:从物镜到目镜的完整光学系统优化

本文详细介绍了使用Zemax进行显微镜光学系统设计的完整流程,从物镜到目镜的优化技巧。通过实战案例和关键参数设置,帮助读者掌握数值孔径、视场角等核心概念,实现高分辨率显微镜设计。文章特别强调了系统级优化和公差分析的重要性,为科研和工业检测提供可靠的光学解决方案。

weixin_42549451的博客 435

Linux运维人,该醒醒了,2019年要变天了

外界都说运维只是处于被动低效率手工救火的状态,企业对其重视程度不高,提起运维很多人能联想到的字眼就有“苦逼”、“辛苦”、“加班”、“背锅”。在大数据、人工智能、容器技术的强力加持下,运维这个传统的技术工种已经从“机械劳动”这样的刻板印象中蜕变出来,成为了任何一家技术公司所必须依赖和大力投入的核心技术能力。 现在,运维人员的发展前景也开始让很多程序员眼羡,作为Linux运维人员的你:这一年,你的L...

qq_43083284的博客 1万+

完美去掉大黑条!!Android 5.1修改导航栏背景颜色

现在很多手机都是用虚拟按键了,但是很多手机的虚拟按键的导航栏背景颜色是黑色的,看起来其丑无比啊,比如华为;要想看上去协调一些,当然是改成透明的啦,怎么改呢?按照以往的思路,当然是直接改布局文件就可以了的,想想这个思路也没错,布局文件位于 frameworks/base/packages/SystemUI/res/layout/navigation_bar.xml但素,我改了之后,发现这样是行不通的

zhonglunshun的专栏 1万+

R语言中的Gamma分布函数

在R语言中,我们可以使用最大似然估计(Maximum Likelihood Estimation,MLE)或最小二乘估计(Least Squares Estimation,LSE)等方法来估计Gamma分布的参数。本文介绍了在R语言中使用Gamma分布函数的基本操作,包括生成随机变量、计算概率密度函数和累积分布函数,以及参数估计和拟合。函数来生成Gamma分布的随机变量,计算概率密度函数(PDF)和累积分布函数(CDF),以及进行参数估计和拟合。要计算Gamma分布的累积分布函数(CDF),我们可以使用。

ByteWhiz的博客 1629

Android 隐藏虚拟导航栏,禁止下拉通知栏,禁止上滑出虚拟导航栏

Android 隐藏虚拟导航栏 View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | ...

a785722173的博客 1万+

EPLAN 电气制图(六):结构盒与设备管理器核心概念(基础知识选看)

结构盒是 EPLAN 中用于标识元件安装位置的逻辑容器,非实际设备或黑盒,仅用于原理图中划分功能区域或物理位置(如 “柜内”“柜外”)。标识符设置:在 “显示设备标识符” 中输入位置代号(如 “+ 柜外”),完整格式为 “= 高层代号 + 位置代号”;筛选与定位:通过 “筛选器” 按类别(如电机、接触器)快速查找设备,右键 “转到(图形)” 可高亮定位图纸中的元件;设备保护:重要设备可启用保护(【项目数据】→【设备】→【启用设备保护】),防止误删除(显示橙色圆圈标记)。

电工 1056

基于STM32设计的遥控灭火消防小车_296

随着城市化进程的加速和火灾发生频率的增加,传统的消防方式在应对初期火灾时存在反应慢、效率低等问题。为了提高火灾响应速度和灭火效率,本设计开发了一款基于STM32单片机的遥控灭火消防小车。该小车配备了烟雾检测、温湿度监测、火源定位、灭火操作等功能,能够通过蓝牙和WIFI实现远程控制与实时视频传输。设计采用了MQ2烟雾传感器、SHT30温湿度传感器、火光传感器和ESP32摄像头模块等硬件设备。系统不仅能够自动检测和定位火源,还可以手动调整灭火器对准位置,进行干粉灭火。此外,蜂鸣器用于火源报警,确保操作人员及时得

721

android虚拟键影响布局,解决Android 全屏虚拟按键弹出挤压布局问题!

隐藏虚拟按键public static void hideBottomUIMenu(Activity activity) {if (!checkDeviceHasNavigationBar(activity))return;if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) {View v = ac...

weixin_33894125的博客 839

第一篇:APS智能排产理论核心与求解器选型指南

本文系统解析了APS(高级计划与排程)系统的核心功能与技术实现。APS作为融合生产计划与排程的智能决策系统,通过运筹优化算法实现全局最优,平衡交付与效率。重点探讨了混合整数线性规划(MILP)在APS中的应用,包括设备分配、生产批量和人员班次优化等场景,并分析了其局限性与其他算法(如启发式算法)的互补性。文章还提供了APS实施策略建议和优化建模技巧,强调从简单模型开始迭代验证的重要性。最后介绍了甘特图在APS中的多维可视化作用,包括计划调整和决策支持功能。全文为理解APS系统原理及实践应用提供了全面指导。

算法工程师 544

Android 设置5.0以后出现的虚拟按钮背景颜色

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置虚拟按键的背景颜色 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIP...

凌云志 829

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SystemUI底部三个虚拟按键的背景颜色修改

三个虚拟按键的设置是在framework层中。     先查看三个按键的布局的初始化: 位置 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java: protected PhoneStatusBarView makeStatusBarView() { if

Garment1991的专栏 9551

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

虚拟按键挡住应用的解决办法

&lt;ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background=""/&gt;//状态栏颜色,根据自己需求 /* * 状态栏为透明色 * 可以通过添加占位v...

wei844067872的博客 1128

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android手机状态栏颜色设置,android设置状态栏的颜色

1.首先设置状态栏为透明。2.再在布局文件中设置布局文件的背景颜色。具体实现:protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) {getWindow().addFlags(Wind...

weixin_36455562的博客 2558

Android 9.0系统源码_SystemUI(八)PhoneWindow更新状态栏和导航栏背景颜色的流程解析

通过android9.0系统源码分析Activity、Dialog更新状态栏和底部栏颜色的过程

AfinalStone的专栏 2407

android显示状态栏隐藏导航栏代码

/** * 显示状态栏, 隐藏虚拟按键 */ public void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏 if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api if (getWindow() != null) { View v = g

weixin_43841938的博客 1091

Android导航栏虚拟按键颜色修改全攻略:从应用到系统级定制

Android系统UI定制一直是开发者和玩机用户关注的高频话题,其中导航栏颜色调整更是涉及从应用层到系统层的复杂博弈。虚拟按键由SystemUI进程统一渲染,普通应用只能通过窗口属性请求背景色与图标深浅,而图标颜色仅有深浅两态,无法指定具体色值。理解WindowInsetsControllerCompat、Edge-to-Edge等现代API的演进,是适配不同Android版本的关键。技术价值在于掌握从应用内可控到系统级Overlay覆盖再到源码修改的完整路径,既能解决日常深色模式适配问题,也能为ROM定制

weixin_29169899的博客 272
上一篇: Android 7.0安装apk
下一篇: Android 自带描边颜色渐变炫酷进度条
github_2011
博客等级 码龄10年 116粉丝 56原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值