4

在 Android 中,每个对话框都显示Builder为用于该对话框类。是这些Builder类中的静态内部类。那么为什么 Builder 被赋予了构建对话框的控制权呢?提前致谢。

4

2 回答 2

5

它只是一个帮助类,允许您调用链中的方法并轻松设置正/负按钮。例如:

警报对话框生成器

AlertDialog.Builder alert = new AlertDialog.Builder(this)
  .setTitle("this is title")
  .setMessage("this is message")
  .setCancelable(false)
  .setPositiveButton("OK", null);
  alert.show();

警报对话框

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

因此,现在您可能会看到用两种不同方式创建相同事物的难易程度不同。

于 2012-08-27T10:14:56.333 回答
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();

//这条线将动画附加到您的对话框中,您不会在 AlertDialog.Builder 类中找到它

dialog.getWindow().getAttributes().windowAnimations=R.style.DialogSlide;

因此,通过这种方式,您可以创建任何类型的动画并通过创建样式附加到 AlertDialog。但我认为你很少能通过使用 AlertDialog.Builder 类来实现这一点。因此,您可以通过使用动画为用户提供更好的用户体验。

于 2020-07-03T03:16:27.370 回答