Как контролировать ширину и высоту диалогового окна 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. 

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

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

Только небольшое изменение в 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.