Я разрабатываю приложение для Android и должен знать, как изменить расположение диалога прогресса. Мне нужно, чтобы он располагался в нижней части экрана, а не в центре, как по умолчанию.Как изменить положение диалогового окна прогресса?
ответ
Вы можете позвонить по телефону ProgressDialog#getWindow#setGravity(...)
, чтобы изменить гравитацию.
Итак:
ProgressDialog dialog = ProgressDialog.show(AContext, "Test", "On the bottom");
dialog.getWindow().setGravity(Gravity.BOTTOM);
Добавление андроида: gravity = "bottom" к самому внешнему элементу XML в макете может это сделать. Не уверен, что это приведет к диалогу или его содержимому.
Это вон» t доведите диалог до нижней части экрана. Он может перемещать контент в нижней части родительского представления. –
В дополнение к другим ответы, которые вы можете использовать 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 он обеспечивает смещение от данного края.
Спасибо за дополнительную информацию. Мне это не нужно сегодня, но я буду в будущем. –
Если вы используете какую-либо пользовательскую тему для ProgressDialog, тогда вы можете добавить ниже XML-тег в стиль в вашем style.xml файл пользовательской темы
<item name="android:layout_gravity">bottom</item>
Спасибо! Работает отлично. – oliverwhite