如何锁定片段方向而不锁定活动方向?

时间:2013-12-04 08:40:40

标签: android android-layout android-fragments android-activity android-orientation

我有一个特定的用例,我希望片段以纵向模式锁定,但仍然可以旋转活动(和/或在同一活动中可见的其他片段)。有可能吗?

锁定片段方向的所有解决方案建议使用setRequestedOrientation并锁定活动方向,但我需要其他可见片段进行旋转。

我的应用程序支持API 10+(如果有一个使用API​​ 11+的好解决方案,我可以考虑在API< 11中删除对landscape的支持。)

提前致谢。

2 个答案:

答案 0 :(得分:11)

看一下这个答案:

覆盖每个片段中的setUserVisibleHint()。

仅限肖像片段:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if(isVisibleToUser) {
        Activity a = getActivity();
        if(a != null) a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

在肖像/风景片段中:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if(isVisibleToUser) {
        Activity a = getActivity();
        if(a != null) a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
    }
}

这将允许整个活动在一个片段中旋转,但在其他片段中将其固定为肖像。

回答者: https://stackoverflow.com/a/13252788/2767703

答案 1 :(得分:4)

回复可能有点迟,但是我可以看到你找不到解决方案,你可以尝试这样做,每当你从你的活动中调用你的片段时,在它之前添加下面的代码

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

以及所有其他/默认片段

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

希望我帮助