Android. Позиционирование Dialog

image

В статье рассмотрены способы позиционирования диалогового окна относительно дисплея устройства.

При отображении пользователю диалогового окна с информацией окно диалога по умолчанию позиционируется по центру дисплея, т.е. по центру по вертикали и по горизонтали. Эту логику возможно изменить, отпозиционировав диалоговое окно в любой части экрана.
Особенность координат в том, что по умолчанию координаты X и Y раны 0. Точка пересечения оси X и Y (0, 0) находится в центре диалогового окна, а не в левом верхнем углу дисплея. Это нужно учитывать.

Для примера создадим простое диалоговое окно в OnCreate вашей Activity:

AlertDialog.Builder builder = new Builder(this);
builder.setTitle("Are you sure?").setPositiveButton("OK", new DialogInterface.OnClickListener(){
 public void onClick(DialogInterface dialog, int which){
 dialog.dismiss();
 }
});

Dialog dialog = builder.create();
dialog.show();


Продемонстрируем несколько примеров позиционирования диалогового окна:
  1. Смещение вниз от центра
  2. Смещение вверх от центра
  3. Смещение влево от центра
  4. Смещение вправо от центра
  5. Прилипание к нижней части экрана с возможностью задания отступа от неё
  6. Прилипание к верхней части экрана с возможностью задания отступа от неё
  7. Прилипание к правой части экрана с возможностью задания отступа от неё
  8. Прилипание к левой части экрана с возможностью задания отступа от неё
  9. Множественное прилипание(верх-лево, низ-право и т.п. 
Для получения текущих параметров диалога используется следующая запись:

WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); 


Для применения результатов позиционирования используется следующая запись:

dialog.getWindow().setAttributes(params); 


Рассмотрим каждый из пунктов и представим результаты.

1) Смещение вниз от центра
params.y = 100;

Результат позиционирования:
image

2) Смещение вверх от центра
params.y = -100;

Результат позиционирования:
image

3) Смещение влево от центра
params.x = -50;

Результат позиционирования:
image

4)Смещение вправо от центра
params.x = 50;

Результат позиционирования:
image

5) Прилипание к нижней части экрана с возможностью задания отступа от неё
params.gravity = Gravity.BOTTOM;
params.y = 50;

Результат позиционирования:
image

6) Прилипание к верхней части экрана с возможностью задания отступа от неё
params.gravity = Gravity.TOP;
params.y = 50;

Результат позиционирования:
image

7) Прилипание к правой части экрана с возможностью задания отступа от неё
params.gravity = Gravity.RIGHT;
params.x = 30;

Результат позиционирования:
image

8) Прилипание к левой части экрана с возможностью задания отступа от неё
params.gravity = Gravity.LEFT;
params.x = 20;

Результат позиционирования:
image

9) Множественное прилипание

— верх-лево
params.gravity = Gravity.LEFT | Gravity.TOP;

Результат позиционирования:
image

— низ-право
params.gravity = Gravity.RIGHT | Gravity.BOTTOM;

Результат позиционирования:
image

Используя все эти полученные знания вы можете позиционировать диалоговое окно как захотите!


0 комментариев

комментарий был удален
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.