Android TV 通常是用遥控器操作的,系统导航栏都是关闭的,但带触摸的TV就很有必要加上导航栏了。
1. 修改base/core/res/res/values/config.xml
base/core/res/res/values/config.xml
- <bool name="config_showNavigationBar">false</bool>
+ <bool name="config_showNavigationBar">true</bool>
但是在TV 上屏通常是横屏的,手机上是竖屏的,仅仅打开上面这个设置,在TV 右边屏幕就会有一个黑条的导航栏,但没有图标,这时候就要把导航栏想办法改到屏幕下面,
2. base/services/core/java/com/android/server/policy/PhoneWindowManager.java
mNavigationBarOnBottom这个值决定导航条的位置,从名字就看的出来,true 的时候是底部,false在垂直右边,在TV 屏的1920x1080分辨率上这个值 为false,所以直接改为true
主要代码在setInitialDisplaySize, 和beginLayoutLw 这两个函数里,包括导航栏的位置,其实X,Y 坐标,长宽等到
public void setInitialDisplaySize(Display display, int width, int height, int density) {
......................................
mNavigationBarCanMove = width != height && shortSizeDp < 600; 这个值在setInitialDisplaySize函数里
........................................
public void beginLayoutLw(boolean isDefaultDisplay, int displayWidth, int displayHeight,
int displayRotation) {
...................................................
mNavigationBarOnBottom = true;//(!mNavigationBarCanMove || displayWidth < displayHeight);
if (mNavigationBarOnBottom)