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

В статье рассмотрены способы позиционирования диалогового окна относительно дисплея устройства.
При отображении пользователю диалогового окна с информацией окно диалога по умолчанию позиционируется по центру дисплея, т.е. по центру по вертикали и по горизонтали. Эту логику возможно изменить, отпозиционировав диалоговое окно в любой части экрана.
Особенность координат в том, что по умолчанию координаты 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();Продемонстрируем несколько примеров позиционирования диалогового окна:
- Смещение вниз от центра
- Смещение вверх от центра
- Смещение влево от центра
- Смещение вправо от центра
- Прилипание к нижней части экрана с возможностью задания отступа от неё
- Прилипание к верхней части экрана с возможностью задания отступа от неё
- Прилипание к правой части экрана с возможностью задания отступа от неё
- Прилипание к левой части экрана с возможностью задания отступа от неё
- Множественное прилипание(верх-лево, низ-право и т.п.
WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); Для применения результатов позиционирования используется следующая запись:
dialog.getWindow().setAttributes(params); Рассмотрим каждый из пунктов и представим результаты.
1) Смещение вниз от центра
params.y = 100;Результат позиционирования:

2) Смещение вверх от центра
params.y = -100;Результат позиционирования:

3) Смещение влево от центра
params.x = -50;Результат позиционирования:

4)Смещение вправо от центра
params.x = 50;Результат позиционирования:

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

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

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

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

9) Множественное прилипание
— верх-лево
params.gravity = Gravity.LEFT | Gravity.TOP;Результат позиционирования:

— низ-право
params.gravity = Gravity.RIGHT | Gravity.BOTTOM;Результат позиционирования:

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