概述:
之前项目中曾经做过一个功能,需要根据在页面顶部靠边的位置添加一个菜单按钮,按钮点击后弹出popwindow,如果设备显示导航栏navigationbar,当导航栏显示在底部的时候,菜单键显示在页面左上角,当导航栏不在底部,而是在左右两侧的时候,菜单键总是显示在导航栏的对侧。
解决思路:
当进入页面的是,需要在页面的oncreate中根据导航栏的位置来设置菜单键的位置,经过查找,好像没有开放API可以返回导航栏的位置,网络搜索,也没有找到相关的信息,只剩下最后一个方法,去源码里头找找看看有没有类似的实现。查找思路如下:
- 在/framework/base/core/res/values文件夹中搜索navigation字符
- 如果步骤1搜索到了一些可能有用的信息,则根据步骤1搜索得到的可能信息去java代码中搜索
- 如果步骤1中没有没有得到可能有用的信息,则根据经验去systemui文件夹下或者几个跟窗口管理较密切的类中去查找,比如:windowmanagerservice,PhoneWindowManager等中去继续查找相关字符
实现过程:
1.在values文件夹中搜索navigation字符,得到的信息较多,需要自己去一个个筛选哪些信息可能会有用,这里发现很多都是导航栏高度、和颜色设置,这里发现一个是否显示导航栏的设置,在config.xml中:
<!-- Whether a software navigation bar should