Как сделать так, чтобы ширина расширенного класса AbstractDialogFragment соответствовала ширине окна?

#java #android

#java #Android

Вопрос:

Я показываю диалоговое окно в своем мобильном приложении, используя расширенный класс AbstractDialogFragment. Как мне установить ширину в соответствии с размером экрана?

Я уже пытался переопределить метод onResume () и задать ширину и высоту, получив размеры окна, но я хотел бы установить только ширину.

Вот что я попробовал:

 @Override
public void onResume()
{
    super.onResume();
    Window window = getDialog().getWindow();

    // ...
    // get window width and height
    // ...

    window.setLayout(width, height);
    window.setGravity(Gravity.CENTER);
}
  

Я ожидаю, что ширина диалоговых окон будет относительно ширины экрана.

Ответ №1:

вы можете установить высоту диалога с помощью этого кода или вы можете проверить это

 Window window = dialog.getWindow();
        WindowManager.LayoutParams wlp = window.getAttributes();
        wlp.gravity = Gravity.CENTER;
        window.setAttributes(wlp);
        dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
  

Комментарии:

1. Я попробовал это, используя getDialog () вместо dialog, но это не изменило ширину.

Ответ №2:

Попробуйте вот так:

 Dialog dialog = getDialog();
if (dialog != null) {
  int width = ViewGroup.LayoutParams.MATCH_PARENT;
  int height = ViewGroup.LayoutParams.MATCH_PARENT;
  Objects.requireNonNull(dialog.getWindow())
      .setFlags(
          WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
          WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
  Objects.requireNonNull(dialog.getWindow()).setLayout(width, height);
}
  

Комментарии:

1. То же самое :/ Я запустил его в режиме отладки, а ширина и высота равны -1. Есть идеи?