Активность в портретной ориентации и DialogFragment в горизонтальной ориентации

Я пытаюсь представить DialogFragment в альбомной ориентации, но моя базовая активность заблокирована в портретной ориентации (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;
  }
}

Я уже пытался установить его в layout xml, но результат тот же. Как это исправить? Или есть лучший способ представить диалог в другой ориентации деятельности? заранее спасибо,


person xubnaha    schedule 05.05.2015    source источник


Ответы (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);
    }
}

Это позволит всей активности вращаться в одном фрагменте, но зафиксировать ее портрет в других.

person Shaik MD Ashiq    schedule 05.05.2015
comment
Спасибо Шайк! Я попробовал ваш подход, но он не работает для того, что я делаю. Поскольку все действие вращается, мне нужно, чтобы оно было устойчивым, а диалоговое окно вращалось. - person xubnaha; 05.05.2015