文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android WindowInsetsController 设置状态栏、导航栏

2023-08-19 13:45

关注

WindowInsetsController 窗口控制器

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {//android 30val windowInsetsController = window.decorView.windowInsetsController// 系统栏 前景深色//  windowInsetsController?.setSystemBarsAppearance(WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS, WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS)   // 系统栏 前景浅色windowInsetsController?.setSystemBarsAppearance(0, WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS)// 默认的行为,在 api33已过时了,推荐 BEHAVIOR_DEFAULT。 若是结合hide(),从隐藏栏的屏幕边缘滑动后,会固定显示windowInsetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_SWIPE// 如下 behavior 与 hide() 结合 后,从隐藏栏的屏幕边缘滑动,系统栏会再次显示且会在一段时间后再次自动隐藏// 若状态栏和导航栏都设置了隐藏,那滑动后,两者会同时显示windowInsetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPEwindowInsetsController?.hide(WindowInsets.Type.statusBars()) // 隐藏状态栏// 隐藏导航栏; 会将屏幕中的类似物理按钮(back, home) 隐藏,需要滑一下才可见,使它们变成了虚拟按键windowInsetsController?.hide(WindowInsets.Type.navigationBars())}

有 hide() ,也有 show()

WindowInsetsControllerCompat 窗口控制器的兼容实现

implementation 'androidx.core:core-ktx:1.9.0'

在更早的版本中,使用
ViewCompat.getWindowInsetsController() 获取 WindowInsetsControllerCompat 实例
而现在推荐使用 WindowCompat.etInsetsController() 获取 WindowInsetsControllerCompat 实例

val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)windowInsetsController.isAppearanceLightNavigationBars = true // true, 则将导航栏的前景色更改为浅色 api >= 26windowInsetsController.isAppearanceLightStatusBars = false // true, 则将状态栏的前景色更改为浅色   api >= 23windowInsetsController.hide(WindowInsetsCompat.Type.statusBars()) // 隐藏状态栏windowInsetsController.hide(WindowInsetsCompat.Type.navigationBars()) // 隐藏导航栏// 与 hide() 结合 后, 从隐藏栏的屏幕边缘滑动,系统栏会再次显示且会在一段时间后再次自动隐藏windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE// 与 hide() 结合 后, 从隐藏栏的屏幕边缘滑动后,会固定显示;isAppearanceLightStatusBars 设置为 false,状态栏才是浅色// windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE// 与 hide() 结合 后, 从隐藏栏的屏幕边缘滑动后,会固定显示;isAppearanceLightStatusBars 设置为 false,状态栏才是浅色// windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH

设置背景色

window.statusBarColor = Color.BLUE // 状态栏背景色window.navigationBarColor = Color.BLUE() //应用内 导航栏,如 actionBar、底部虚拟按键背景if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {    window.navigationBarDividerColor = Color.RED // 导航栏 分隔线的 颜色}

什么是导航栏

底部的三个按键就是导航栏 (navigation bar): back / home / recent 。
在这里插入图片描述

高版本系统,recent,可能没有图标了,需要在那个位置"上滑"

来源地址:https://blog.csdn.net/jjwwmlp456/article/details/128725489

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯