Allow rotation/landscape in one fragment

前端 未结 6 1302
旧巷少年郎
旧巷少年郎 2020-12-05 03:05

My app has a single Activity with a FragmentPagerAdapter with four fragments (Using the ViewPagerIndicator library). One of these fragments has designs for both a separate p

6条回答
  •  一个人的身影
    2020-12-05 03:15

    Override setUserVisibleHint() in each fragment.

    In the portrait only fragments:

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

    in the the portrait/landscape 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);
        }
    }
    

    This will allow the whole activity to rotate in one fragment, but fix it to portrait in others.

提交回复
热议问题