Как контролировать ширину и высоту диалогового окна Alert Dial по умолчанию в Android?

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Title"); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create(); 

Я использую приведенный выше код для отображения диалогового окна Alert. По умолчанию он заполняет экран шириной и wrap_content по высоте.
Как я могу контролировать ширину и высоту диалогового окна предупреждения по умолчанию?
Я пытался:

 alert.getWindow().setLayout(100,100); // It didn't work. 

Как получить параметры макета в окне предупреждения и вручную установить ширину и высоту?

Только небольшое изменение в Sat Code, Установите макет после метода show () alertDialog.

 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(layout); builder.setTitle("Title"); alertDialog = builder.create(); alertDialog.show(); alertDialog.getWindow().setLayout(600, 400); //Controlling width and height. 

Или вы можете сделать это на моем пути.

 alertDialog.show(); WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); lp.copyFrom(alertDialog.getWindow().getAttributes()); lp.width = 150; lp.height = 500; lp.x=-170; lp.y=100; alertDialog.getWindow().setAttributes(lp); 

Хорошо, я могу управлять шириной и высотой с помощью класса Builder. я использовал

 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(layout); builder.setTitle("Title"); AlertDialog alertDialog = builder.create(); alertDialog.getWindow().setLayout(600, 400); //Controlling width and height. alertDialog.show(); 

Это также работает, добавив параметр .getWindow().setLayout(width, height) после show()

 alertDialogBuilder .setMessage("Click yes to exit!") .setCancelable(false) .setPositiveButton("Yes",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, close // current activity MainActivity.this.finish(); } }) .setNegativeButton("No",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, just close // the dialog box and do nothing dialog.cancel(); } }).show().getWindow().setLayout(600,500); 

Прежде чем пытаться настроить размер пост-макета, сначала проверьте, какой стиль использует ваш диалог. Убедитесь, что ничего в дереве стилей не установлено

 <item name="windowMinWidthMajor">...</item> <item name="windowMinWidthMinor">...</item> 

Если это происходит, это так же просто, как предоставить свой собственный стиль конструктору конструктора, который принимает темуResId] ( http://developer.android.com/reference/android/app/AlertDialog.Builder.html#AlertDialog.Builder (Android.content.Context , int)) доступен API 11+

 <style name="WrapEverythingDialog" parent=[whatever you were previously using]> <item name="windowMinWidthMajor">0dp</item> <item name="windowMinWidthMinor">0dp</item> </style> 

Я не знаю, можете ли вы изменить высоту / ширину по умолчанию AlertDialog, но если вы хотите это сделать, я думаю, вы можете сделать это, создав свой собственный диалог. Вам просто нужно предоставить android:theme="@android:style/Theme.Dialog" в android manifest.xml для вашей деятельности и можете написать весь макет в соответствии с вашим требованием. Вы можете установить высоту и ширину своего настраиваемого диалога из XML-файла Android Resource.

Intereting Posts
Отключить захват скриншотов во всех приложениях Не удалось создать приложение Ошибка: выполнение выполнено для задачи «app: package» packageName «Debug». > Значение (73836)> 0x0000ffff Доступ к классу SharedPreferences от Android из Delphi Intellij Android URI схемы проекта не зарегистрирован? Контур обратной связи Android Webview GetSupportFragmentManager () и getFragmentManager () в android 3.0+ Макет, дублирующий себя при вращении экрана Как добавить значок (изображение, логотип ..) в строку состояния OnCreate vs. onResume / onRestart bevhaviour относительно переменных-членов Можно ли безопасно использовать идентификатор Android View для нескольких видов деятельности? Когда использовать кинжал в приложении для Android? SetOnClickListener (новый OnClickListener () {}) Как найти температуру города по долготе и широте в андроиде? Как удалить все уведомления, когда приложение Android (действие или услуга) будет убито? Загрузите файл с Android и покажите прогресс в ProgressDialog