是的,在Stack Overflow上已经有很多关于同一主题的答案,其中大部分都提到了以下方法:
手动处理配置更改:
现在,假设我有一个简单的Android应用程序,其中包含一个RelativeLayout,其中包含一个按钮和一个文本字段(EditView)。整个应用程序已经以编程方式设计完成。
在竖屏模式下:文本字段和按钮如下所示,一个在另一个下面。 在横向模式下,我希望文本字段和按钮相邻,为此我将在上述onConfigurationChanged方法中更改x、y、高度、宽度等等。同样地,为了处理应用程序显示大小的变化(多窗口、多屏翻转设备),我需要做类似的操作。(目前,我不知道如何处理这些变化)。
目前,我的相对布局中只有两个视图:一个按钮和一个文本字段(EditView),假设当我的活动中有50-60个视图时,我需要为每个视图和每个场景(屏幕方向、应用程序显示大小等)更改x、y、高度和宽度。
这似乎是非常繁琐的,并且需要长时间维护,有没有其他更简便的方法来处理配置变化呢?
注意:我的整个应用程序是以编程方式设计的,没有使用Jetpack Compose。
附注:Android文档也提到了上述方法不是首选方法。 我也点击了这个链接,但似乎对上述情况没有什么用处。(如果我错了,请纠正我)
Manifest.xml:
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
</activity>
手动处理配置更改:
override fun onConfigurationChanged (newConfig: Configuration) {
super.onConfigurationChanged (newConfig)
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// TODO block 1:
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
// TODO block 2:
}
}
现在,假设我有一个简单的Android应用程序,其中包含一个RelativeLayout,其中包含一个按钮和一个文本字段(EditView)。整个应用程序已经以编程方式设计完成。
在竖屏模式下:文本字段和按钮如下所示,一个在另一个下面。 在横向模式下,我希望文本字段和按钮相邻,为此我将在上述onConfigurationChanged方法中更改x、y、高度、宽度等等。同样地,为了处理应用程序显示大小的变化(多窗口、多屏翻转设备),我需要做类似的操作。(目前,我不知道如何处理这些变化)。
目前,我的相对布局中只有两个视图:一个按钮和一个文本字段(EditView),假设当我的活动中有50-60个视图时,我需要为每个视图和每个场景(屏幕方向、应用程序显示大小等)更改x、y、高度和宽度。
这似乎是非常繁琐的,并且需要长时间维护,有没有其他更简便的方法来处理配置变化呢?
注意:我的整个应用程序是以编程方式设计的,没有使用Jetpack Compose。
附注:Android文档也提到了上述方法不是首选方法。 我也点击了这个链接,但似乎对上述情况没有什么用处。(如果我错了,请纠正我)
RelativeLayout
被ConstraintLayout
取代了。有没有其他更简单的方法来处理配置更改呢?可以使用ConstraintLayout
并更改约束条件。 - undefined