Подтвердить что ты не робот

Как изменить положение диалога прогресса?

Я разрабатываю приложение для Android и должен знать, как изменить расположение диалога прогресса. Мне нужно, чтобы он располагался в нижней части экрана, а не в центре, как по умолчанию.

4b9b3361

Ответ 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 в макете может это сделать. Не уверен, что это приведет к диалогу или его содержимому.