我在多窗口模式下更改方向时遇到问题。 在Tablet设备中,当窗口大小为2/3(在多窗口模式下)时,活动不会在更改方向时重新启动。因此,我的布局看起来不正确。
在多窗口模式下,当窗口大小为显示大小的1/2或1/3时,在更改方向时活动可以正确重新启动。 我尝试并使用(Android Studio)模拟器中的Nexus 7和Pixel C设备(带有Oreo和Pie图像)对此进行了确认。
我的应用程序以Oreo 8.1为目标,并且清单中未使用“ android:configChanges”或“ android:screenOrientation”。
请注意,2/3窗口大小不是正方形的,并且两个方向的屏幕大小都有很小的变化,如果未触发方向更改,则屏幕大小更改将触发活动重新启动。
复制步骤:
我是否缺少引起此问题的东西?还是这是错误还是其他?在这种情况下,如何使我的活动重新开始?
答案 0 :(得分:1)
一个有趣的问题,我从不知道方向改变过程会有例外。我能够使用Pixel C模拟器(Android 8.1)和定位到API级别26的应用来重现该问题。
我想您的屏幕不仅仅是另一个列表,因为在这种情况下12像素的差异(如果我可以信任LayoutInspector,则相差1688与1676),因此我想添加一个观察值有用的:
我的应用包含一个自定义View
,从日志中可以看到,即使onMeasure()
的{{1 }} 不是。因此,您可以在此处进行一些微调。
另一种选择是强制重新创建onLayout()
。只要检测到屏幕尺寸已更改,就可以通过调用Activity
方法onCreate()
(记录在here中)来实现。要跟踪屏幕尺寸的变化,可以创建覆盖Activity
的自定义Activity
并将其用作recreate()
布局文件的根。