更改不同的布局文件而不重新启动活动

问题描述

我有两个单独的 xml 文件用于活动的 potrait 和横向视图,但是当我旋转手机时,xml 文件更改但活动重新启动。如何在不重新启动活动的情况下更改布局文件

解决方法

更好的方法是在您的 Activity 中使用 ViewModel,这样即使它被销毁,您的数据也将保留在 ViewModel 中,并且可以在视图创建后重新加载横向。

但是,如果您仍然希望在不重新启动 Activity 的情况下处理布局更改,则需要进行以下更改

  1. AndroidManifest 中的 android:configChanges 标志设置为 orientation

    <activity
        android:name="com.example.MainActivity"
        android:configChanges="orientation"/>
    
  2. 覆盖您的 Activity 中的 onConfigurationChanged 方法并加载新视图。这部分有点棘手,因为在给新视图充气之前,您必须放弃之前的视图。一种方法是在您的 Activity 中使用一个容器,您可以在其中加载两个片段,一个用于纵向,一个用于横向。

有关详细信息,您可以阅读此documentation

请记住,虽然这可行,但不推荐使用 android:configChanges 属性