Как создать диалог поверх кнопки - PullRequest
3 голосов
/ 27 марта 2012

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 27 марта 2012

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

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

Расположение всплывающего окна в Android

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

1 голос
/ 27 марта 2012

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

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

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

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

...