Как создать диалог поверх кнопки

Я хочу создать диалоговое окно, которое появляется, когда пользователь нажимает кнопку. (На самом деле это своего рода регулятор громкости, появляющийся, когда пользователь нажимает кнопку в наушниках)

У меня есть файл макета для диалога (с высотой, зависящей от содержимого), и в методе onCreate я пытаюсь установить гравитацию сверху | справа и пользовательское поле (такое же, как у моей кнопки).

this.getWindow().setGravity(Gravity.TOP | Gravity.RIGHT);
WindowManager.LayoutParams lp = this.getWindow().getAttributes();
lp.x = x;
lp.y = y;

Но то, что я получаю, это просто диалоговое окно по центру справа (не вверху справа!) Без каких-либо полей.

Другими словами, я хотел бы нарисовать свой диалог с пользовательским макетом в указанной точке экрана.


person leshka    schedule 27.03.2012    source источник


Ответы (2)


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

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WIDTH, HEIGHT);
params.topMargin = X;
params.leftMargin = Y;
yourRelativeLayout.addView(myDialog, params);

X должен быть чем-то вроде clickedX - WIDTH/2...

Надеюсь, это было полезно!

person Ferdau    schedule 27.03.2012

Я думаю, что вы ищете всплывающее окно. Посмотрите здесь:

http://developer.android.com/reference/android/widget/PopupWindow.html

Позиционирование всплывающего окна в Android

Если у вас возникли проблемы с размещением всплывающего окна, попробуйте использовать метод showAsDropDown(View, int offsetx, offsety) для PopupWindow, он привяжет окно к данному представлению по определенному смещению.

person Line    schedule 27.03.2012