如何让我的应用程序的一个特定片段的方向工作?

时间:2015-07-17 15:37:12

标签: android android-fragments orientation screen-orientation android-orientation

在将此问题标记为重复之前,我想指出我有一个我正在经历的奇怪要求。我的应用程序受手机和平板电脑支持,但只能通过平板电脑而不是手机支持。我限制它只适用于平板电脑。但现在,我有一个奇怪的问题,我需要在手机中的一个片段中启用方向。在我的情况下说x模块中的xfragment。如何在不删除不支持方向的手机限制的情况下解决这个问题。还有其他方法吗? 目前在我的片段工具中我正在这样做:

public static void setActivityOrientation(Activity activity){
        boolean tabletSize = MyUtils.isTablet(activity);
        if (tabletSize) {
            activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
        } else {
            activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
    }

并在基础活动中将其命名为oncreate:

FragmentUtils.setActivityOrientation(this);

如何使其仅适用于该特定片段?有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果xfragment占用整个屏幕,你可以在xfragment的正确生命周期中使用上面相同的代码

   public class XFragment  extends android.support.v4.app.Fragment{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if(!MyUtils.isTablet(getActivity())){
            getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if(!MyUtils.isTablet(getActivity())){
            getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }

    }
}

案例2:

如果XFragment没有全屏并且你有多个片段,那么唯一的方法就是调用detach并手动附加XFragment。