Я разрабатываю приложение для Android и должен знать, как изменить расположение диалога прогресса. Мне нужно, чтобы он располагался в нижней части экрана, а не в центре, как по умолчанию.
Как изменить положение диалога прогресса?
Ответ 1
Вы можете вызвать ProgressDialog#getWindow#setGravity(...)
, чтобы изменить гравитацию.
Итак:
ProgressDialog dialog = ProgressDialog.show(AContext, "Test", "On the bottom");
dialog.getWindow().setGravity(Gravity.BOTTOM);
Ответ 2
В дополнение к другим ответам вы можете использовать LayoutParams.x или LayoutParams.y для обеспечения смещения от заданного края. Например:
progressDialog = ProgressDialog.show(this, "Title","Text");
progressDialog.getWindow().setGravity(Gravity.TOP);
LayoutParams params = progressDialog.getWindow().getAttributes();
params.y = 100;
progressDialog.getWindow().setAttributes(params);
И вам хорошо знать о LayoutParams.y:
Y для этого окна. С гравитацией по умолчанию она игнорируется. При использовании TOP или BOTTOM он обеспечивает смещение от заданного края.
и о LayoutParams.x:
Положение X для этого окна. С гравитацией по умолчанию она игнорируется. При использовании LEFT или START или RIGHT или END он обеспечивает смещение от заданное ребро.
Ответ 3
Если вы используете какую-либо пользовательскую тему для ProgressDialog, то вы можете добавить тег xml ниже в свой стиль в файле style.xml настраиваемой темы
<item name="android:layout_gravity">bottom</item>
Ответ 4
Добавление android: gravity = "bottom" к самому внешнему элементу XML в макете может это сделать. Не уверен, что это приведет к диалогу или его содержимому.