13

我正在创建一个自定义对话框以获取用户的输入。我注意到,当我使用 an 时,AlertDialog我可以将诸如 an 之类的小部件添加EditTextAlertDialogusingsetView()方法中。我正在研究定制AlertDialog并注意到Dialog有一个方法setContentView()。在我的子类中,AlertDialog我可以使用setContentView()or 或setView().

我注意到的一个区别是,当我在 上使用setView()AlertDialog,我可以看到正面和负面按钮。在我的子类中AlertDialog,使用setContentView()我没有得到正面和负面按钮。

谁能解释其他差异?

谢谢。

4

3 回答 3

31

如果我没有正确理解它,setContentView请使用您的自定义布局填充整个 Dialog 窗口。标题、图标、按钮……什么都没有了。setView另一方面设置按钮和标题之间的视图布局。

看图片

于 2011-11-08T12:35:30.350 回答
2

setContentView 是AlertDialog 的父类方法,表示所有的对话框窗口,setView 是AlertController 方法,在AlertDialog 窗口视图中,有topPanel,contentPanel,buttonPanel.setView 只设置customView 为contentpanel。

于 2017-08-21T08:01:53.190 回答
0

顺便说一句,您还可以调用 AlertDialogs setView 方法,该方法似乎也删除了视图周围的额外“间距”。

void setView(视图视图,int viewSpacingLeft,int viewSpacingTop,int viewSpacingRight,int viewSpacingBottom)

像这样。

alertDialog.setView(myView,0,0,0,0);

于 2014-01-28T08:11:06.920 回答