肖像和DialogFragment在景观上的活动

时间:2015-05-05 02:44:26

标签: android orientation dialogfragment

我正在尝试在横向上呈现DialogFragment,但我的基本Activity已锁定在纵向上(android:screenOrientation =“portrait”)。我通过在创建过程中完成对话框旋转来完成。但是,当它显示时,容器似乎是旧格式(宽度和高度像旋转前一样),并且旋转的对话框不适合它。此外,容器会剪切对话框的内容。

public class MenuFragment extends DialogFragment {

  private final int mOrientation;

  public PlantsMenuFragment(int orientation) {
    mOrientation = orientation;
  }


  public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View mRootView = inflater.inflate(R.layout.fragment_plants_menu,
            container, false);

    if (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE == mOrientation) {
        mRootView.setRotation(90);
    }

    return mRootView;
  }
}

我已经尝试在布局xml中设置它,但结果是一样的。 我如何解决它?或者有更好的方法以不同的活动方向呈现对话框? 提前谢谢你,

1 个答案:

答案 0 :(得分:0)

覆盖每个片段中的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);
    }
}

这将允许整个活动在一个片段中旋转,但在其他片段中将其固定为肖像。