2010-08-02 3 views

ответ

77

Вы можете позвонить по телефону ProgressDialog#getWindow#setGravity(...), чтобы изменить гравитацию.

Итак:

ProgressDialog dialog = ProgressDialog.show(AContext, "Test", "On the bottom"); 
       dialog.getWindow().setGravity(Gravity.BOTTOM); 
+0

Спасибо! Работает отлично. – oliverwhite

1

Добавление андроида: gravity = "bottom" к самому внешнему элементу XML в макете может это сделать. Не уверен, что это приведет к диалогу или его содержимому.

+0

Это вон» t доведите диалог до нижней части экрана. Он может перемещать контент в нижней части родительского представления. –

16

В дополнение к другим ответы, которые вы можете использовать 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 он обеспечивает смещение от данного края.

+0

Спасибо за дополнительную информацию. Мне это не нужно сегодня, но я буду в будущем. –

3

Если вы используете какую-либо пользовательскую тему для ProgressDialog, тогда вы можете добавить ниже XML-тег в стиль в вашем style.xml файл пользовательской темы

<item name="android:layout_gravity">bottom</item>