我有一个使用Theme.Dialog样式的活动,因此它是另一个活动上方的浮动窗口。但是,当我在对话框窗口外部(在后台活动上)单击时,对话框关闭。如何停止这种行为?
我有一个使用Theme.Dialog样式的活动,因此它是另一个活动上方的浮动窗口。但是,当我在对话框窗口外部(在后台活动上)单击时,对话框关闭。如何停止这种行为?
Answers:
这可以帮助您。这是处理外部触摸事件的一种方式:
我认为通过抓住事件而不采取任何措施,您可以防止比赛结束。但是,奇怪的是,活动对话框的默认行为是当您触摸外部时不关闭自身。
(PS:代码使用WindowManager.LayoutParams)
为了防止对话框在按下返回键时被关闭,请使用此
dialog.setCancelable(false);
并且为了防止对话框因外界触摸而被解散,请使用此
dialog.setCanceledOnTouchOutside(false);
AlertDialog
在接触外部时关闭,而这正是该答案所提供的。
setCancelable(false)
您实际拥有的是一个活动(即使它看起来像一个对话框),因此,setFinishOnTouchOutside(false)
如果要在单击后台活动时使其保持打开状态,则应从活动中调用。
编辑:这仅适用于android API级别11或更高
onBackPressed()
对身体不执行任何操作的
在onCreate中将对话框用作活动时,请添加此
setFinishOnTouchOutside(false);
将对话框的取消设置为false,就足够了,您只要触摸警报对话框之外或单击“后退”按钮,警报对话框就会消失。所以使用这个:
setCancelable(false)
并且不再需要其他功能:
dialog.setCanceledOnTouchOutside(false);
如果要创建一个临时对话框并想在此处放置此代码行,请参见以下示例:
new AlertDialog.Builder(this)
.setTitle("Trial Version")
.setCancelable(false)
.setMessage("You are using trial version!")
.setIcon(R.drawable.time_left)
.setPositiveButton(android.R.string.yes, null).show();
使用此代码对我有用
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setCancelable(false);
Dialog dialog = new Dialog(context)
dialog.setCanceledOnTouchOutside(true);
//use this to dismiss the dialog on outside click of dialog
dialog.setCanceledOnTouchOutside(false);
//use this for not to dismiss the dialog on outside click of dialog.
dialog.setCancelable(false);
//used to prevent the dismiss of dialog on backpress of that activity
dialog.setCancelable(true);
//used to dismiss the dialog on onbackpressed of that activity
只是,
alertDialog.setCancelable(false);
防止用户在对话框外部单击。
我在onCreate()中使用了它,似乎可以在任何版本的Android上使用;在5.0和4.4.x上进行了测试,无法在Gingerbread上进行测试,默认情况下,三星设备(运行GB的注1)具有这种方式:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
setFinishOnTouchOutside(false);
}
else
{
getWindow().clearFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
}
super.onCreate(savedInstanceState);
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);
公共无效的Mensaje(查看v){
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();
}
这是对您所有问题的完美答案。...希望您喜欢使用Android进行编码
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();