我有一个特定的用例,我希望 fragment 以纵向模式锁定,但仍旋转 Activity (和/或同一 Activity 中可见的其他 fragment )。有可能吗?
所有锁定 fragment 方向的解决方案都建议使用 setRequestedOrientation 并锁定 Activity 方向,但我需要其他可见 fragment 来旋转。
我的应用程序支持 API 10+(如果有使用 API 11+ 的不错的解决方案,我可能会考虑在 API <11 中移除对横向的支持)。
提前致谢。
最佳答案
看看这个答案:
在每个 fragment 中覆盖 setUserVisibleHint()。
在肖像只有 fragment :
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
Activity a = getActivity();
if(a != null) a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
在纵向/横向 fragment 中:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
Activity a = getActivity();
if(a != null) a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
}
}
这将允许整个 Activity 在一个 fragment 中旋转,但在其他 fragment 中将其固定为纵向。
关于android - 如何在不锁定 Activity 方向的情况下锁定 fragment 方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370636/