【问题标题】:Why does AlertDialog.Builder limit the buttons / how does it work?为什么 AlertDialog.Builder 会限制按钮/它是如何工作的?
【发布时间】:2017-12-06 00:10:14
【问题描述】:

我正在尝试制作一个简单的两按钮警报对话框,而不必求助于制作单独的类。我用来构建对话框的 AlertDialog.Builder 类在向对话框中添加按钮时具有三种方法。

setPositiveButton(...)
setNegativeButton(...)
setNeutralButton(...)

为什么 Dialog 对这个 3 按钮限制进行硬编码?另外,为什么按钮需要设置为正面、负面或中性?与积极或中性按钮相比,消极按钮按下有什么影响?

我显然遗漏了一些重要的东西,但这似乎是处理添加按钮的一种不好的方法?因为如果我想要两个(或更多)不应该被视为正面或负面的按钮怎么办?该对话框不允许添加多个中性按钮。

【问题讨论】:

  • 如果正/负/中性不能满足您的需求,您可以设置自定义视图,具有您想要的任何布局

标签: android android-alertdialog


【解决方案1】:

正面、中性或负面是标准警报对话框的选项。 如果您按照按钮的名称来处理正面或负面的操作,构建器将按照设计指南设置布局,如果它们随着新的 Android 版本而更改,您将始终按照建议的顺序进行选择。

当然,您可以按照自己喜欢的顺序设置 OnClickListener。

如果您需要 3 个以上的按钮,您可以通过以下方式扩充您的自定义视图:

LayoutInflater inflater = getActivity().getLayoutInflater();
View dialogView = inflater.inflate(R.layout.alert_dialog_custom_layout, null);
dialogBuilder.setView(dialogView);

【讨论】:

    【解决方案2】:

    三个按钮的限制主要是由于纵向模式下手机屏幕的宽度有限。想象一下,所有按钮都排成一排,这对于AlertDialog 来说是典型的。超过三个按钮并且您开始用完宽度,文本会被截断,并且用户更有可能无意中按下错误的按钮。如果您需要超过 3 个按钮,您将需要一个带有更多按钮的自定义对话框,或者重新考虑您希望如何准确地处理用户输入,同时牢记用户潜在屏幕尺寸的限制。

    同样,正面、中性和负面三个有限选项的原因是为了提供跨操作系统的用户体验一致性。考虑一个来自 Android 1.5 的警报对话框:

    Android 4.0 和 5.0:

    注意“正”和“负”按钮的顺序是如何颠倒的。这是从 Android 3.0 中的“Holo”UI 引入的经过深思熟虑的设计决定。通过分配“正”和“负”按钮,可以根据用户操作系统版本的 UX 更改这些按钮的位置,而无需在应用内更改代码。

    进一步阅读:

    【讨论】:

      猜你喜欢
      • 2015-07-29
      • 2017-09-24
      • 2011-08-25
      • 2019-01-16
      • 2016-01-19
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多