我有一个特定的用例,我希望片段以纵向模式锁定,但仍然可以旋转活动(和/或在同一活动中可见的其他片段)。有可能吗?
锁定片段方向的所有解决方案建议使用setRequestedOrientation并锁定活动方向,但我需要其他可见片段进行旋转。
我的应用程序支持API 10+(如果有一个使用API 11+的好解决方案,我可以考虑在API< 11中删除对landscape的支持。)
提前致谢。
答案 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);
}
}
这将允许整个活动在一个片段中旋转,但在其他片段中将其固定为肖像。
答案 1 :(得分:4)
回复可能有点迟,但是我可以看到你找不到解决方案,你可以尝试这样做,每当你从你的活动中调用你的片段时,在它之前添加下面的代码
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
以及所有其他/默认片段
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
希望我帮助