当我在布局中使用 android:layout_width="match_parent"
来指定这个对话框时,我得到了这个对话框:
我需要一个更宽的对话框。有什么想法吗?
Window
对象并重置宽度来实现。这是一个简单的示例://show the dialog first
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("Test Dialog")
.setMessage("This should expand to the full width")
.show();
//Grab the window of the dialog, and change the width
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
Window window = dialog.getWindow();
lp.copyFrom(window.getAttributes());
//This makes the dialog take up the full width
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(lp);
这是最终结果。请注意,如果您需要对对话框进行微调(如更改背景等),可以进行更多样式设置。以前我使用的方法通常是使用构建器类上的 setView()
自定义对话框中使用的布局。
onStart
方法中进行设置,请参见https://dev59.com/7WAg5IYBdhLWcg3wFHqF#26207535。 - Eborbobdialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
来移除那些边缘。 - Juan José Melero Gómezimport android.support.v7.app.AlertDialog;
替代:
import android.app.AlertDialog;
fill_parent
和match_parent
做的事情完全相同(两者的常量值都是-1
)。 - Eborbob