【问题标题】:How to lock fragment orientation without locking activity orientation?如何在不锁定活动方向的情况下锁定片段方向?
【发布时间】:2013-12-20 15:50:51
【问题描述】:

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

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

我的应用支持 API 10+(如果有使用 API 11+ 的好解决方案,我可能会考虑在 API

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    看看这个答案:

    在每个片段中覆盖 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

    【讨论】:

    • 不,这不起作用。我希望活动旋转,而不是片段。 setRequestOrientation 锁定活动方向,我在问题中已经说过这不是我想要的。
    • 那是不可能的,你不能只旋转没有片段的活动。您可以只锁定某些片段的方向。
    • portrait only fragments snipet 在应用以横向模式启动时两次调用 onResume()。在 HTC One 上测试
    • 请注意,SCREEN_ORIENTATION_FULL_SENSOR 将忽略用户设置并始终根据传感器位置旋转屏幕。如果您希望应用用户轮换设置,请改用 SCREEN_ORIENTATION_UNSPECIFIED
    【解决方案2】:

    回复可能有点晚了,但我可以看到您还没有找到解决方案,您可以尝试这样做,每当您从活动中调用片段时,请在其前面添加以下代码

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
    

    对于所有其他/默认片段

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
    

    希望对我有所帮助

    【讨论】:

    • 这工作正常。但是当按下后退按钮时,前面的片段也改变了方向。那么我们如何才能阻止以前的片段改变它们的方向呢?
    • 编写一个基本片段并应用@bikash 在其中写的内容。然后让你的所有其他片段继承自这个片段,以传播行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多