【发布时间】:2020-09-20 06:31:04
【问题描述】:
我有一个应用程序,它的屏幕旋转被锁定在其中BaseActivity 是所有视图的父级,在清单中包含此代码:
android:configChanges="uiMode"
所以所有片段和活动都是垂直的,不能旋转。
我需要创建一个将绑定到此活动的片段,并且需要在宽度为 600dp 或更高的设备上旋转并以水平模式显示。当片段被破坏(或视图被破坏)时,事情需要按原样进行。活动和所有片段应垂直显示。
有没有办法做到这一点?
编辑 这是我在片段中添加的代码,但片段变得迟钝,最终显示黑屏。
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
requireActivity().window.setSoftInputMode(SOFT_INPUT_ADJUST_PAN)
return inflater.inflate(R.layout.my_fragment, container, false).apply {
post {
if (measuredWidth > 600) {
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}
}
}
}
override fun onDestroyView() {
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
【问题讨论】:
-
在您的片段 onCreate( ) 中,检查设备是否较大宽度。如果是,则处理方向更改。在您的片段中 onDestroy( ) 再次恢复您之前所做的方向更改。你试过这种方法吗?你能发布你的代码吗,让我们看看你尝试了什么。
-
是的,我现在就发布代码。 @Rajasekhar
-
@Rajasekhar 刚刚添加了一个包含代码的编辑
-
我已经添加了我的答案。请告诉我进展如何。
标签: android android-fragments android-activity