我正在尝试在横向上呈现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中设置它,但结果是一样的。 我如何解决它?或者有更好的方法以不同的活动方向呈现对话框? 提前谢谢你,
答案 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);
}
}
这将允许整个活动在一个片段中旋转,但在其他片段中将其固定为肖像。