Fer*_*mac 208 java android dialog touch android-activity
我有一个使用Theme.Dialog样式的活动,这是一个浮动窗口,而不是另一个活动.但是,当我在对话框窗口外部(在背景活动上)单击时,对话框将关闭.我怎么能阻止这种行为?
Sin*_*hak 419
为防止对话框在按下后退键时被解除,请使用此功能
dialog.setCancelable(false);
Run Code Online (Sandbox Code Playgroud)
并且为防止对话框在外部触摸时被解雇,请使用此功能
dialog.setCanceledOnTouchOutside(false);
Run Code Online (Sandbox Code Playgroud)
art*_*tex 116
你实际拥有的是一个Activity(即使它看起来像一个Dialog),因此setFinishOnTouchOutside(false)如果你想在单击后台活动时保持它打开,你应该从你的活动中调用.
编辑:这仅适用于Android API等级11或更高版本
Pet*_*etr 57
对我有用的是创建DialogFragment一个不可取消的集合:
dialog.setCancelable(false);
Run Code Online (Sandbox Code Playgroud)
Mic*_*ert 33
这可以帮到你.这是一种处理外部触摸事件的方法:
通过捕捉事件并无所事事,我认为你可以阻止关闭.但奇怪的是,当您触摸外部时,活动对话框的默认行为应该不会自行关闭.
(PS:代码使用WindowManager.LayoutParams)
ilw*_*ilw 17
对于更高的API 10,Dialog在触摸外部时消失,而在低于API 11时,Dialog不会消失.为防止这种情况,您需要:
在styles.xml:<item name="android:windowCloseOnTouchOutside">false</item>
要么
在onCreate()方法中,使用:this.setFinishOnTouchOutside(false);
注意:对于API 10及更低版本,此方法无效,不需要.
Ron*_*ley 17
将对话框用作onCreate中的活动时添加此项
setFinishOnTouchOutside(false);
Run Code Online (Sandbox Code Playgroud)
Bil*_*low 12
将对话框可取消设置为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();
Run Code Online (Sandbox Code Playgroud)
小智 12
使用此代码它对我有用
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setCancelable(false);
Run Code Online (Sandbox Code Playgroud)
Muh*_*sil 12
不推荐使用警报对话框,因此使用 Dialog dialog = new Dialog(this);
防止近距离接触外界
dialog.setCanceledOnTouchOutside(false);
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
使用setFinishOnTouchOutside(false)的API> 11,不要担心,因为它的Android的默认行为活动为主题的对话将不会对外界触摸完成了API <11个:)!Cheerss!
我在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);
Run Code Online (Sandbox Code Playgroud)
小智 5
alert.setCancelable(false);
alert.setCanceledOnTouchOutside(false);
Run Code Online (Sandbox Code Playgroud)
我想这会帮助你。它对我有用
| 归档时间: |
|
| 查看次数: |
154830 次 |
| 最近记录: |