Позиция активности диалогового окна Android

Я создал не максимизированную активность с помощью андроида: theme = "@android: style/Theme.Dialog", чтобы он выглядел как диалог. Мне нужно изменить положение активности на экране, но я не нашел, как это сделать...

Ответы

Ответ 1

Чтобы изменить положение (с темой, установленной на Theme.Dialog), вы можете переопределить гравитацию, размер и координаты LayoutParams вашего вида декора активности после того, как она была прикреплена к окну. Вот пример:

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();

    View view = getWindow().getDecorView();
    WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
    lp.gravity = Gravity.LEFT | Gravity.TOP;
    lp.x = 10;
    lp.y = 10;
    lp.width = 300;
    lp.height = 300;
    getWindowManager().updateViewLayout(view, lp);
}

Ответ 2

Создайте собственную тему с Theme.Dialog в качестве ее родителя:

  <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">

Итак, для каждого элемента в теме диалога, который вы хотите изменить, используйте CustomDialogTheme вместо Theme.Dialog внутри манифеста Android. Подробнее см. документы разработчиков Android.

Ответ 3

Используйте .setGravity()

progDialog = ProgressDialog.show();

progDialog.getWindow() setGravity (Gravity.BOTTOM);.

Ответ 4

Для дна:

Держите это в своей деятельности.

@Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        try {
            View view = getWindow().getDecorView();
            WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams) view.getLayoutParams();
            layoutParams.gravity = Gravity.BOTTOM;
            getWindowManager().updateViewLayout(view, layoutParams);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Примечание. Вы можете изменить гравитацию, установив этот параметр Gravity.BOTTOM(TOP, LEFT, RIGHT)