我有一个使用Theme.Dialog样式的活动,使其成为另一个活动上方的浮动窗口。然而,当我单击对话框窗口之外的区域(即背景活动)时,对话框会关闭。如何停止这种行为?
我有一个使用Theme.Dialog样式的活动,使其成为另一个活动上方的浮动窗口。然而,当我单击对话框窗口之外的区域(即背景活动)时,对话框会关闭。如何停止这种行为?
简单来说,
alertDialog.setCancelable(false);
防止用户在对话框外单击。
我在onCreate()中使用这个方法,似乎适用于任何版本的Android系统;已经测试过5.0和4.4.x的版本,无法测试Gingerbread版本,三星设备(Note 1运行GB)默认采用此方式:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
setFinishOnTouchOutside(false);
}
else
{
getWindow().clearFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
}
super.onCreate(savedInstanceState);
对于 API > 11,请使用 setFinishOnTouchOutside(false)
。不用担心,因为对于 API < 11,Android 的默认行为是主题为对话框的活动不会在触摸外部时结束 :) !!干杯!!
alert.setCancelable(false);
alert.setCanceledOnTouchOutside(false);
我想这可以帮到你。对我有用。
以下是我的解决方案:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select The Difficulty Level");
builder.setCancelable(false);
同时,可以通过实现onCancelListener来分配不同的操作:
alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialogInterface) {
//Your custom logic
}
});
builder.setCancelable(false);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("¿Quieres ir a el Menú principal?");
builder.setMessage("Al presionar SI iras a el menú y saldras de la materia.");
builder.setPositiveButton("SI", null);
builder.setNegativeButton("NO", null);
builder.setCancelable(false);
builder.show();
}
dismissOnClickOutside = false
属性来防止关闭。 AlertDialog(
title = {
Text("Title")
},
text = {
Text(text = name)
},
onDismissRequest = onDismiss,
confirmButton = {
TextButton(onClick = onDismiss ) {
Text("Yes")
}
},
dismissButton = {
TextButton(onClick = onDismiss ) {
Text("Cancel")
}
},
properties = DialogProperties(
dismissOnClickOutside = false
)
)
}
这是你所有问题的完美答案... 希望你喜欢在安卓上编程
new AlertDialog.Builder(this)
.setTitle("Akshat Rastogi Is Great")
.setCancelable(false)
.setMessage("I am the best Android Programmer")
.setPositiveButton("I agree", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create().show();