Показывать AlertDialog в любом положении экрана
когда мы показываем AlertDialog в android, он отображается в центре экрана. Есть ли способ изменить позицию?
4 ответов
после поиска в различных сообщениях я нашел решение.
код размещен ниже:
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 значение позиции снизу вверх.
Если вы, например, хотите переместить progressdialog немного ниже, а не установить положение пикселя exakt, то этого достаточно:
progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;
чтобы сделать настройку информационным эффектом, я добавил следующий кодdialog.getWindow().setAttributes(wmlp);
после изменения значения wmlp в ответе gypsicoder, или установка wmlp не вступает в силу моим тестом.
эти ответы будут перемещать позицию AlertDialog, однако позиция отображаемого диалогового окна также будет включать отступ вокруг диалогового окна.
Если вы хотите избавиться от этого заполнения (например, чтобы поместить диалог в нижней части экрана), вам также необходимо переопределить стиль AlertDialog по умолчанию в ваших стилях.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>
а также установка окон.LayoutParameters как описано в принятом ответе.
специальный крик @David Caunt, чей ответ:удалить границу, отступ из диалогового окна завершить эту картину.