navigationbar展示位置的获取

这篇博客介绍了如何在Android项目中根据navigationBar的位置设置页面元素。作者在解决思路中提到,由于没有直接的API返回navigationBar的位置,因此深入源码寻找解决方案。通过搜索相关字符并分析,最终在PhoneWindowManager类中找到隐藏方法,实现了获取navigationBar位置的功能。
摘要由CSDN通过智能技术生成
概述:

之前项目中曾经做过一个功能,需要根据在页面顶部靠边的位置添加一个菜单按钮,按钮点击后弹出popwindow,如果设备显示导航栏navigationbar,当导航栏显示在底部的时候,菜单键显示在页面左上角,当导航栏不在底部,而是在左右两侧的时候,菜单键总是显示在导航栏的对侧。

解决思路:

当进入页面的是,需要在页面的oncreate中根据导航栏的位置来设置菜单键的位置,经过查找,好像没有开放API可以返回导航栏的位置,网络搜索,也没有找到相关的信息,只剩下最后一个方法,去源码里头找找看看有没有类似的实现。查找思路如下:

  1. 在/framework/base/core/res/values文件夹中搜索navigation字符
  2. 如果步骤1搜索到了一些可能有用的信息,则根据步骤1搜索得到的可能信息去java代码中搜索
  3. 如果步骤1中没有没有得到可能有用的信息,则根据经验去systemui文件夹下或者几个跟窗口管理较密切的类中去查找,比如:windowmanagerservice,PhoneWindowManager等中去继续查找相关字符
实现过程:

1.在values文件夹中搜索navigation字符,得到的信息较多,需要自己去一个个筛选哪些信息可能会有用,这里发现很多都是导航栏高度、和颜色设置,这里发现一个是否显示导航栏的设置,在config.xml中:

    <!-- Whether a software navigation bar should
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值