![](/img/trans.png)
[英]Prevent Android AlertDialog from closing when neutral button is pressed
[英]AlertDialog only showing neutral button on Android < 7.0
我制作了一个AlertDialog
,它具有三个按钮(正,负,中性),当我在手机(Android 7.0)上对其进行测试时,它可以正常工作,但是我有几个朋友(分别使用Android 5.0和6.0)对其进行了测试,而他们只有显示中性按钮。
这是代码:
AlertDialog.Builder isSelfieBuilder = new AlertDialog.Builder(context);
isSelfieBuilder.setTitle("Choose picture orientation.");
// Set up the buttons
isSelfieBuilder.setPositiveButton("Selfie", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Do something
}
});
isSelfieBuilder.setNeutralButton("Landscape", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Do something
}
});
isSelfieBuilder.setNegativeButton("Portrait", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Do something
}
});
final AlertDialog picTypeDialog = isSelfieBuilder.create();
picTypeDialog.show();
final Button positiveButton = picTypeDialog.getButton(AlertDialog.BUTTON_POSITIVE);
LinearLayout.LayoutParams positiveButtonLL = (LinearLayout.LayoutParams) positiveButton.getLayoutParams();
positiveButtonLL.width = ViewGroup.LayoutParams.MATCH_PARENT;
positiveButton.setLayoutParams(positiveButtonLL);
final Button neutralButton = picTypeDialog.getButton(AlertDialog.BUTTON_NEUTRAL);
LinearLayout.LayoutParams neutralButtonLL = (LinearLayout.LayoutParams) neutralButton.getLayoutParams();
neutralButtonLL.width = ViewGroup.LayoutParams.MATCH_PARENT;
neutralButton.setLayoutParams(neutralButtonLL);
final Button negativeButton = picTypeDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
LinearLayout.LayoutParams negativeButtonLL = (LinearLayout.LayoutParams) negativeButton.getLayoutParams();
negativeButtonLL.width = ViewGroup.LayoutParams.MATCH_PARENT;
negativeButton.setLayoutParams(negativeButtonLL);
有人知道为什么我只能在其中找到中立按钮吗? 我尝试删除对齐部分( .show()
之后的所有内容),但得到的结果相同。 我正在使用API 21(5.0)在模拟器上进行测试,但遇到了同样的问题。
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Choose picture orientation.")
.setPositiveButton("Selfie", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//doSomething
}
})
.setNeutralButton("Landscape", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//doSomething
}
})
.setNegativeButton("Portrait", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//doSomething
}
});
AlertDialog dialog = builder.create();
dialog.show();
因此,我“修复”此问题的方法是完全禁用:
AlertDialog picTypeDialog = isSelfieBuilder.create();
picTypeDialog.show();
并简单地替换为
isSelfieBuilder.show();
即使按钮之间的间距不够理想,并且即使没有AlertDialog
我也无法编辑按钮布局,它现在在所有设备上都能正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.