如何锁定屏幕以不允许在一个片段上旋转
How to lock the screen to not allow rotate at one fragment
有一个寻呼机片段,当一个片段被滚动时,希望它被锁定在纵向模式,而其他片段应该允许旋转。
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_UNSPECIFIED
,它将重置为未设置任何特定内容。
有一个寻呼机片段,当一个片段被滚动时,希望它被锁定在纵向模式,而其他片段应该允许旋转。
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_UNSPECIFIED
,它将重置为未设置任何特定内容。