Когда мы показываем AlertDialog в android, он отображается в центре экрана. Есть ли способ изменить позицию?
Показать AlertDialog в любом положении экрана
Ответ 1
После поиска в различных сообщениях я нашел решение.
Код размещен ниже:
private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if(item == 0) {
} else if(item == 1) {
} else if(item == 2) {
}
}
});
AlertDialog dialog = builder.create();
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();
wmlp.gravity = Gravity.TOP | Gravity.LEFT;
wmlp.x = 100; //x position
wmlp.y = 100; //y position
dialog.show();
Здесь значение позиции x - это пиксели слева направо. Для позиции y позиция снизу вверх.
Ответ 2
Если вы, например, хотите немного переместить progressdialog вниз и не установите положение пикселя exakt, то этого достаточно:
progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;
Ответ 3
Чтобы сделать настройку включенной, мы добавили следующий код
dialog.getWindow().setAttributes(wmlp);
после изменения значения wmlp в ответе гипсикодера, или установка wmlp не вступает в силу моим тестом.
Ответ 4
Эти ответы будут перемещать позицию AlertDialog, однако позиция отображаемого диалогового окна также будет включать дополнение к диалоговому окну.
Если вы хотите избавиться от этого дополнения (например, чтобы поместить ваше диалоговое окно в нижнюю часть экрана), вам также необходимо переопределить стиль AlertDialog по умолчанию в вашем файле styles.xml, чтобы установить windowBackground в null, вот так:
<resources>
<!-- Example app theme - mine uses the below -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:alertDialogTheme">@style/MyDialogTheme</item>
</style>
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<!-- Full width -->
<item name="android:layout_width">fill_parent</item>
<!-- Null window background kills surrounding padding -->
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
Как и установка параметров Window.LayoutParameters, как описано в принятом ответе.
Специальный крик к @David Caunt, ответ на который: удалить границу, дополнение из диалога завершил эту картинку.