Android 13: Приложение в Landscape ориентации отображает портретный урезанный вид
Активити в манифесте имеет следующий вид:
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTask"
android:resizeableActivity="false"
android:screenOrientation="portrait">
Необходимо, чтобы все экраны приложения было в портретной ориентации (за исключением одного) и не поддерживало мультиоконный режим (resizeableActivity нельзя ставить в true)
Но на одном фрагменте мне необходимо поддержать и landscape, и portrait ориентации. Делаю это следующим образом:
class MainFragment : Fragment() {
companion object {
fun newInstance() = MainFragment()
}
private var orientationEventListener: OrientationEventListener? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragment_main, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER
orientationEventListener = object : OrientationEventListener(requireActivity()) {
override fun onOrientationChanged(orientation: Int) {
handleOrientationType(orientation)
}
}
}
override fun onResume() {
super.onResume()
orientationEventListener?.enable()
}
private fun handleOrientationType(orientationType: Int) {
when (orientationType) {
Configuration.ORIENTATION_PORTRAIT -> {
requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT
}
Configuration.ORIENTATION_LANDSCAPE -> {
requireActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE
}
}
}
}
Этот код работает на всех девайсах до Android 13. В android 13 происходит следующее при повороте экрана:
Как это можно поправить?
Полный исходный код доступен тут: https://drive.google.com/drive/folders/1Ow7k7H3bChGzt2hY_nSiB5sGwMnpjXWy?usp=share_link

