如何在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(); 

我正在使用上面的代码来显示一个警报对话框。 默认情况下,它将以宽度填充屏幕并以高度填充wrap_content。
我如何控制默认警报对话框的宽度和高度?
我试过了:

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

如何获得警报窗口的布局参数,并手动设置宽度和高度?

Sat代码只有轻微的变化,在alertDialog的show()方法之后设置布局。

 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(); 

在尝试调整布局后大小之前,请先检查您的对话框使用的是什么样式。 确保样式树中没有设置

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

如果发生这种情况,就像将自己的样式提供给[使用themeResId的构build器构造函数]一样简单( 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> 

show()之后.getWindow().setLayout(width, height)通过添加.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); 

我不知道你是否可以改变AlertDialog的默认高度/宽度,但如果你想这样做,我认为你可以通过创build自己的自定义对话框。 您只需在android manifest.xml中为您的活动提供android:theme="@android:style/Theme.Dialog" ,并可根据需要编写整个布局。 您可以从Android资源XML中设置自定义对话框的高度和宽度。