При наличии фрагмента пейджера и при прокрутке одного фрагмента он должен быть заблокирован в портретном режиме, а другим следует разрешить поворот.
override fun onPageSelected(position: Int) {
val item = getDataItem(position)
if (item is SpecialItem) {
if (context?.resources?.configuration?.orientation == Configuration.ORIENTATION_PORTRAIT) {
activity?.requestedOrientation = ActivityInfo.ORIENTATION_PORTRAIT
// or tried activity?.requestedOrientation = ActivityInfo.ORIENTATION_PORTRAIT
// or tried activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LOCKED
}
} else {
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
}
......
}
Но после вызова
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
он все еще может вращать экран.
Как правильно заблокировать экран?
В чем разница между
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
а также
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
а также
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_FULL_USER
Обновить
Спасибо за замечание JensV, что это была опечатка, и она должна быть ORIENTATION_PORTRAIT
и она работает.
Теперь вопрос только в чем разница, и стоит ли ей пользоваться
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LOCKED
или же
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
// or activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
Публикация в качестве ответа, как я решил вашу проблему.
SCREEN_ORIENTATION_LANDSCAPE
проблема заключалась в том, что вместо SCREEN_ORIENTATION_PORTRAIT
использовался SCREEN_ORIENTATION_PORTRAIT
Ответ на ваш второй вопрос: я бы пошел с SCREEN_ORIENTATION_UNSPECIFIED
который вернется к отсутствию SCREEN_ORIENTATION_UNSPECIFIED
либо конкретных настроек.