如何仅为单个Activity启用resizeableActivity属性?
解决方案
针对你在Galaxy Z Fold3 5G上遇到的单个Activity无法设置resizeableActivity="true"的问题,你可以尝试以下几个步骤:
移除
android:screenOrientation="locked"属性
锁定屏幕方向会直接阻止系统对Activity进行大小调整,因为resizeableActivity需要Activity能够响应屏幕尺寸和方向的变化。去掉这个属性后,系统才能正常触发折叠屏的分屏/resize行为。添加必要的
android:configChanges配置
为了让Activity在尺寸变化时不被系统重启,同时正确响应折叠屏的状态变化,需要在Activity标签中添加以下配置:android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"这会告诉系统由Activity自行处理这些配置变化,而不是销毁重建Activity,确保resize功能正常工作。
为Activity单独设置
tools:targetApi(可选)
如果你的应用在Application级别设置了较低的tools:targetApi,可以在目标Activity标签中添加更高的API级别(比如针对折叠屏的"r"即Android 11+,或者"s"Android 12+),确保系统识别到该Activity支持折叠屏相关特性:tools:targetApi="r"
修改后的Activity配置示例:
<activity android:name=".PlayVideo_Act" android:hardwareAccelerated="true" android:allowTaskReparenting="true" android:launchMode="singleTask" android:resizeableActivity="true" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" tools:targetApi="r"/>
另外需要注意:如果你的代码中存在强制设置屏幕方向的逻辑(比如setRequestedOrientation),也需要移除或调整这部分代码,避免覆盖Manifest中的配置。
内容的提问来源于stack exchange,提问作者android_dev
相关产品推荐
相关产品推荐

