如何使用横向和纵向布局?

问题描述 投票:0回答:1

我有一个活动和几个片段(它们称为片段A和片段B)。 现在fragmentA需要同时具有纵向和横向布局。 fragmentB 必须保持纵向。该活动在 onCreate 方法中显示fragmentA。 我尝试了这个链接:https://stackoverflow.com/a/53864286/15351040 在fragmentA中添加了以下代码。

override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        activity?.let {
            it.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR
        }
        return super.onCreateView(inflater, container, savedInstanceState)
    }
override fun onDestroyView() {
        super.onDestroyView()
        activity?.let {
            it.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
        }
    }

并在fragmentB中添加了以下代码。

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    activity?.let {
        it.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
    }
    return super.onCreateView(inflater, container, savedInstanceState)
}
override fun onDestroyView() {
    super.onDestroyView()
    activity?.let {
        it.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
    }
}

但是当我打开fragmentB时,fragmentA又被打开,而不是fragmentB。也许当 Activity 的 requestOrientation 改变时,会调用 Activity 的 onCreate 。 当fragmentA为纵向时效果很好,但在横向时则不然。

我现在应该做什么?

android android-layout android-fragments android-orientation landscape-portrait
1个回答
-1
投票

在 AndroidManifest.xml 中添加带有 Activity 方向值的 configChanges 标签。例如:

        <activity
            android:name=".ui.activity.MainActivity"
            android:configChanges="keyboardHidden|orientation|screenSize|screenLayout" />
© www.soinside.com 2019 - 2024. All rights reserved.