Dialog.setContentView(View)& AlertDialog.setView(查看)

时间:2011-05-18 06:47:32

标签: android user-interface customdialog

我正在创建一个自定义对话框来获取用户的输入。我注意到,当我使用AlertDialog时,我可以使用EditText方法将AlertDialog等小部件添加到setView()。我正在考虑自定义AlertDialog,并注意到Dialog有一个方法setContentView()。在AlertDialog的子类中,我可以使用setContentView()setView()

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

有人可以解释其他差异吗?

感谢。

3 个答案:

答案 0 :(得分:26)

如果我正确理解了它,setContentView会使用您的自定义布局使整个Dialog窗口膨胀。标题,图标,按钮......没有任何遗骸。另一方面,setView设置按钮和标题之间视图的布局。

See image

答案 1 :(得分:2)

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

答案 2 :(得分:0)

顺便说一下,你也可以调用AlertDialogs的setView方法,这似乎也消除了视图周围的额外“间距”。

void setView(View view,int viewSpacingLeft,int viewSpacingTop,int viewSpacingRight,int viewSpacingBottom)

像这样。

alertDialog.setView(MyView的,0,0,0,0);