当前位置: 首页 > news >正文

Android 11.0 修改系统显示大小导航栏消失

Android 11.0 修改系统显示大小导航栏消失

1.显示大小设置为大时,导航栏图标不显示。
设置为大,较大,最大时,导航栏图标不显示。

在这里插入图片描述
在这里插入图片描述
2.开始怀疑是导航栏被隐藏了,各种折腾无效。

3.发现:
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java中

updateCurrentUserResources方法异常,加打印:

android.util.Log.d(TAG, "updateCurrentUserResources: navigation_bar_gesture_height "+ res.getDimension(com.android.internal.R.dimen.navigation_bar_gesture_height));android.util.Log.d(TAG, "updateCurrentUserResources: navigation_bar_frame_height "+ res.getDimension(com.android.internal.R.dimen.navigation_bar_frame_height));android.util.Log.d(TAG, "updateCurrentUserResources: navigation_bar_height "+ res.getDimension(com.android.internal.R.dimen.navigation_bar_height));android.util.Log.d(TAG, "updateCurrentUserResources: defaultGestureHeight "+ defaultGestureHeight + " dm.density " + dm.density + " dm.densityDpi " + dm.densityDpi);

结果:

2024-06-24 18:33:55.932   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: dm:DisplayMetrics{density=1.1875, width=1920, height=720, scaledDensity=1.1875, xdpi=320.0, ydpi=320.0}
2024-06-24 18:33:55.932   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: com.android.internal.R.dimen.navigation_bar_gesture_height:17105329
2024-06-24 18:33:55.932   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: dm.density:1.1875
2024-06-24 18:33:55.932   686-686   EdgeBackGestureHandler  com.android.systemui                 E  updateCurrentUserResources: defaultGestureHeight:48.0
2024-06-24 18:33:55.998   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: dm:DisplayMetrics{density=1.1875, width=1920, height=720, scaledDensity=1.1875, xdpi=320.0, ydpi=320.0}
2024-06-24 18:33:55.998   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: com.android.internal.R.dimen.navigation_bar_gesture_height:17105329
2024-06-24 18:33:55.998   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: dm.density:1.1875
2024-06-24 18:33:55.998   686-686   EdgeBackGestureHandler  com.android.systemui                 E  updateCurrentUserResources: defaultGestureHeight:48.0
2024-06-24 18:34:02.916   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: dm:DisplayMetrics{density=1.375, width=1920, height=720, scaledDensity=1.375, xdpi=320.0, ydpi=320.0}
2024-06-24 18:34:02.916   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: com.android.internal.R.dimen.navigation_bar_gesture_height:17105329
2024-06-24 18:34:02.917   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: dm.density:1.375
2024-06-24 18:34:02.917   686-686   EdgeBackGestureHandler  com.android.systemui                 E  updateCurrentUserResources: defaultGestureHeight:0.0
2024-06-24 18:34:02.959   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: dm:DisplayMetrics{density=1.375, width=1920, height=720, scaledDensity=1.375, xdpi=320.0, ydpi=320.0}
2024-06-24 18:34:02.959   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: com.android.internal.R.dimen.navigation_bar_gesture_height:17105329
2024-06-24 18:34:02.959   686-686   EdgeBackGestureHandler  com.android.systemui                 D  updateCurrentUserResources: dm.density:1.375
2024-06-24 18:34:02.959   686-686   EdgeBackGestureHandler  com.android.systemui                 E  updateCurrentUserResources: defaultGestureHeight:0.0

com.android.internal.R.dimen.navigation_bar_height的值为0

4.解决:

在frameworks\base\core\res\res添加文件夹:

最小宽度sw这个是Android默认的,
一般应该是这样计算(在网上也能搜索到)
adb shell wm size 得到分辨率为 1920*720
adb shell wm density 得到密度为 160
那么sw = 160 * 小的size / density = 160x720/240 = 720

frameworks/base/core/res/res/values-sw400dp/
frameworks/base/core/res/res/values-sw460dp/
frameworks/base/core/res/res/values-sw520dp/

我的机器dm.densityDpi为180,190,220,252,284,在160和190正常
所以添加以上三个,在文件夹中添加dimens.xml文件:

<resources><!-- Height of the bottom navigation / system bar. --><dimen name="navigation_bar_height">64dp</dimen><!-- Height of the bottom navigation bar in landscape; oftenthe same as @dimen/navigation_bar_height --><dimen name="navigation_bar_height_landscape">64dp</dimen></resources>

navigation_bar_height*dm.density
180的值为:48dp
190的值为:56dp
220的值为:64dp
252的值为:72dp
284的值为:80dp

http://www.lryc.cn/news/388213.html

相关文章:

  • RocketMQ源码学习笔记:Producer启动流程
  • Node.js 和浏览器环境中都使用 WebSocket
  • css美化滚动条样式
  • 由浅入深,走进深度学习(补充篇:转置卷积和FCN)
  • Linux基础篇——目录结构
  • 星际编码:Swifter.Json,.NET宇宙中的数据处理新星
  • python 压缩数据
  • nacos在k8s上的集群安装实践
  • 数据结构—判断题
  • 树莓派挂载的移动硬盘badblocks坏道屏蔽,以这个为准
  • Unity开箱即用的UGUI面板的拖拽移动功能
  • 春秋云境:CVE-2022-25411[漏洞复现]
  • java基础知识点全集
  • 如何完成域名解析验证
  • 2024年6月个人工作生活总结
  • Json与Java类
  • 动手学深度学习(Pytorch版)代码实践 -计算机视觉-39实战Kaggle比赛:狗的品种识别(ImageNet Dogs)
  • 在Linux系统中挂载硬盘
  • 安卓短视频去水印v1.7 简洁好用
  • 【征服数据结构】:期末通关秘籍
  • GIT 基于master分支创建hotfix分支的操作
  • Vue-CLI脚手架与node.js安装
  • 自适应站长跑路单页网站源码
  • Java基础(判断和循环)
  • 51单片机第12步_使用stdio.h库函数仿真串口通讯
  • simulink-esp32开发foc电机
  • Python教程--基本技能
  • 干货分享:Spring中经常使用的工具类(提示开发效率)
  • 一文讲懂npm link
  • 观成科技:证券行业加密业务安全风险监测与防御技术研究