Позиция активности диалогового окна 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)