Отключить автоматическое вращение в фрагменте

У меня есть PictureFragment, который я использую, чтобы показать изображение в полноэкранном режиме при выборе его из моего эскиза. Он работает нормально, но когда я поворачиваю свой смартфон, изображение также поворачивается и масштабируется очень некрасиво, так что его высота теперь равна его фактической ширине и так далее. Как я могу отключить вращение для этого фрагмента? Я всегда читал, как это сделать для всей деятельности, но для остальной части этой работы я хочу сохранить автоматический поворот. Или, если это также легко возможно, как я могу разумно масштабировать изображение при вращении, чтобы сохранить его соотношение сторон?

Ответ 1

В своем Fragment вызове внутри onResume, чтобы заблокировать портрет:

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

затем в onPause, чтобы разблокировать ориентацию:

getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);

OBS! Для этого используйте if(getActivity != null) перед использованием этих методов.

Ответ 2

Добавить в манифест

андроид: configChanges = "keyboardHidden | ориентация"

добавить в свой фрагмент

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (getActivity() != null) {          
            if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
                getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            }
        }       
}