android - 如何在不锁定 Activity 方向的情况下锁定 fragment 方向?

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

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

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

我的应用程序支持 API 10+(如果有使用 API 11+ 的不错的解决方案,我可能会考虑在 API <11 中移除对横向的支持)。

提前致谢。

最佳答案

看看这个答案:

在每个 fragment 中覆盖 setUserVisibleHint()。

在肖像只有 fragment :

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

在纵向/横向 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);
    }
}

这将允许整个 Activity 在一个 fragment 中旋转,但在其他 fragment 中将其固定为纵向。

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

关于android - 如何在不锁定 Activity 方向的情况下锁定 fragment 方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370636/

相关文章:

android - Espresso - 自定义查找 View 未捕获 NoMatchingViewException - 没有 IdlingResource

android - 用于检查 API 是否正在运行 Android 的状态灯

android - 错误膨胀类 - NestedScrollView - 找不到类

android - 将焦点从 ViewPager/TabLayout 中的选项卡移开

android - 无法弄清楚如何使用 ImageViewTouch Hook

Android - setSoTimeout 不工作

android - PowerManager.goToSleep() 出现问题

java - 将适配器应用于 Spinner 会导致 NullPointerException?

Android 将 GridView 设置为每行只有 2 列

带有 fragment 或 Activity 的 Android Studio 抽屉导航