[DESCRIPTION][FAQ09081]

NavigationBar(虚拟按键)横屏默认在右边,能否做到在下面显示
image.png

[SOLUTION]

Navigation bar的位置是系统根据手机屏幕密度决定是在屏幕下方还是右方,如果希望横屏时一定在下方显示,可以修改代码实现

phonewindowmanager.java文件,具体逻辑如下:

第一步:控制Navigationbar位置

变量mNavigationBarOnBottom会决定是否显示在下面,该变量为true,navigation bar显示在屏幕下方,为false显示在屏幕右边
image.png
而mNavigationBarOnBottom这个值又是由mNavigationBarCanMove决定的。在系统默认设计中shortSizeDp如果小于600,就需要修改下面if分支中mNavigationBarCanMove=false这样navigation bar 才会显示在下方

Before KK:
image.png
For KK, L,M, 将如下改为mNavigationBarCanMove =false;即可。
mNavigationBarCanMove = shortSizeDp < 600;

第二步:修改加载布局文件:
NavigationBarView.java
image.png