在Android中,每个对话框都使用Builder
显示该对话框类。 Builder
是这些类中的静态内部类。那么为什么Builder可以控制构建对话框呢?提前谢谢。
答案 0 :(得分:4)
它只是一个帮助类,它允许您调用链中的方法并轻松设置正/负按钮。例如:
<强> AlertDialog.Builder 强>
AlertDialog.Builder alert = new AlertDialog.Builder(this)
.setTitle("this is title")
.setMessage("this is message")
.setCancelable(false)
.setPositiveButton("OK", null);
alert.show();
<强> AlertDialog 强>
AlertDialog alert2 = new AlertDialog.Builder(this).create();
alert2.setTitle("this is title");
alert2.setMessage("");
alert2.setCancelable(false);
alert2.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// null
}
});
alert2.show();
所以现在你可能会看到以两种不同的方式创建相同内容的难易程度。
答案 1 :(得分:0)
我完全同意waqaslam,但是AlertDialog同时为您提供了更多自定义对话框的方法。就像您可以通过使用
在AlertDialog中轻松应用动画一样// Create an enter animation(name = enter_anim)
<translate android:fromXDelta="-100%p"
android:fromYDelta="0%"
android:duration="1000">
</translate>
//Create an exit animation(name = exit_anim)
<translate
android:duration="1000"
android:fromXDelta="0%"
android:toXDelta="100%p">
</translate>
//Then combine the enter and exit animation by creating a style
<style name="DialogSlide">
<item name="android:windowEnterAnimation">@anim/enter_anim</item>
<item name="android:windowExitAnimation">@anim/exit_anim</item>
</style>
//Now creating an AlertDialog
AlertDialog dialog = new AlertDialog.Builder(this).create();
dialog.setTitle("Alert Dialog");
dialog.setMessage("Hello! This is an alert dialog");
dialog.getWindow().getAttributes().windowAnimations=R.style.DialogSlide;
dialog.show();
///此行将动画附加到Dialog,而在AlertDialog.Builder类中找不到该动画
dialog.getWindow().getAttributes().windowAnimations=R.style.DialogSlide;
因此,通过这种方式,您可以创建任何类型的动画并通过创建样式将其附加到AlertDialog。 但是我认为您很少可以通过使用AlertDialog.Builder类来实现这一目标。 因此,通过使用动画,您可以为用户提供更好的用户体验。