问题描述
我有两个单独的 xml 文件用于活动的 potrait 和横向视图,但是当我旋转手机时,xml 文件更改但活动重新启动。如何在不重新启动活动的情况下更改布局文件。
解决方法
更好的方法是在您的 Activity 中使用 ViewModel,这样即使它被销毁,您的数据也将保留在 ViewModel 中,并且可以在视图创建后重新加载横向。
但是,如果您仍然希望在不重新启动 Activity 的情况下处理布局更改,则需要进行以下更改
-
将 AndroidManifest 中的
android:configChanges
标志设置为orientation
<activity android:name="com.example.MainActivity" android:configChanges="orientation"/>
-
覆盖您的 Activity 中的
onConfigurationChanged
方法并加载新视图。这部分有点棘手,因为在给新视图充气之前,您必须放弃之前的视图。一种方法是在您的 Activity 中使用一个容器,您可以在其中加载两个片段,一个用于纵向,一个用于横向。
有关详细信息,您可以阅读此documentation
请记住,虽然这可行,但不推荐使用 android:configChanges 属性