为什么AlertDialog.Builder限制按钮/它是如何工作的?

时间:2017-12-05 15:30:26

标签: android alertdialog android-alertdialog

我正在尝试创建一个简单的双按钮警报对话框,而不必诉诸于单独的类。我用来构建对话框的AlertDialog.Builder类在向对话框添加按钮时有三种方法。

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

为什么Dialog硬编码这个3键限制?另外,为什么按钮需要设置为正,负或中性?与正按钮或中性按钮相比,负按钮按压有什么影响?

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

三个按钮的限制主要是由于手机屏幕在纵向模式下的宽度有限。想象一下,所有按钮都按行排列,就像AlertDialog一样。超过三个按钮,你开始超出宽度,文本被截断,用户更有可能无意中按错了按钮。如果您需要3个以上的按钮,您需要一个带有更多按钮的自定义对话框,或者重新考虑您希望如何处理用户的输入,同时牢记用户的限制潜在的屏幕尺寸。

同样,积极,中立和消极三种有限选择的原因是在整个操作系统中提供UX一致性。考虑Android 1.5的警告对话框:

Android 1.5 dialog

使用Android 4.0和5.0:

Android 4.0 dialogs enter image description here

请注意正面和负面按钮的顺序是如何反转的。这是一个经过深思熟虑的设计决定,从" Holo" Android 3.0中的UI。通过分配"肯定"和#34;否定"按钮,这些按钮的位置可以根据用户操作系统版本的UX进行更改,而无需在应用程序中更改代码。

进一步阅读: