Android 11.0 解决切换横屏时SystemUI导航栏固定在桌面右侧而不是底部的问题

Posted Mrsongs的心情杂货铺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 11.0 解决切换横屏时SystemUI导航栏固定在桌面右侧而不是底部的问题相关的知识,希望对你有一定的参考价值。

前言

正常情况下横竖屏旋转的时候导航栏也会跟着一起旋转,但是在android R上面发现导航栏在横屏的时候是固定在右侧的,而不是旋转到底部。这个功能其实是Android 高版本特意修改的,为了是方便横屏玩游戏等场景的时候不小心误触到。我们先看看原本的界面图。

【竖屏界面】


【横屏界面】


一开始的时候我以为是在SystemUI里面控制的导航栏旋转界面切换,但是发现并不是这样,其实是跟
framework中的 R.bool.config_navBarCanMove 这个变量有关,具体代码修改很简单,如下:

diff --git a/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java b/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java
old mode 100644
new mode 100755
index 0d467c50aa1..0a7662dd8fc
--- a/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -2895,9 +2895,10 @@ public class DisplayPolicy 
 
     void updateConfigurationAndScreenSizeDependentBehaviors() 
         final Resources res = getCurrentUserResources();
-        mNavigationBarCanMove =
-                mDisplayContent.mBaseDisplayWidth != mDisplayContent.mBaseDisplayHeight
-                        && res.getBoolean(R.bool.config_navBarCanMove);
+        //mNavigationBarCanMove =
+        //        mDisplayContent.mBaseDisplayWidth != mDisplayContent.mBaseDisplayHeight
+        //                && res.getBoolean(R.bool.config_navBarCanMove);
+        mNavigationBarCanMove = false;
         mDisplayContent.getDisplayRotation().updateUserDependentConfiguration(res);
     
 

【修改后横屏界面】

以上是关于Android 11.0 解决切换横屏时SystemUI导航栏固定在桌面右侧而不是底部的问题的主要内容,如果未能解决你的问题,请参考以下文章

系统方向学习总结4-- Android 10.0 解决切换横屏时SystemUI导航栏固定在桌面右侧而不是底部的问题

系统方向学习总结4-- Android 10.0 解决切换横屏时SystemUI导航栏固定在桌面右侧而不是底部的问题

系统方向学习总结4-- Android 10.0 解决切换横屏时SystemUI导航栏固定在桌面右侧而不是底部的问题

Android 11.0 修复在录音机APK(SoundRecorder),横屏显示时录制时间不能居中

Android 4.0 ,如何截屏,当竖屏时。

Android开发,重写了onConfigurationChanged方法。横屏切换竖屛不会重建,而竖屛切换横屏却仍会重建活动