我有一个使用Theme.Dialog样式的活动,因此它是另一个活动上方的浮动窗口。但是,当我在对话框窗口外部(在后台活动上)单击时,对话框关闭。如何停止这种行为?
这可以为您提供帮助。这是处理外部触摸事件的一种方式:
在窗口外触摸时如何取消以活动为主题的对话框?
只是想指出,有是一种方式来获得对话框般从主题作为一个对话的活动“触摸外面取消”的行为,虽然我还没有完全调查它是否有不必要的副作用。
在创建视图之前,在Activity的onCreate()方法中,将在窗口上设置两个标志:一个将其设置为“非模态”,以允许除活动视图之外的其他视图接收事件。第二种是接收到其中一个事件已发生的通知,这将向您发送ACTION_OUTSDIE移动事件。
如果将活动的主题设置为对话框主题,则将获得所需的行为。
看起来像这样:
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Make us non-modal, so that others can receive touch events.
getWindow().setFlags(LayoutParams.FLAG_NOT_TOUCH_MODAL, LayoutParams.FLAG_NOT_TOUCH_MODAL);
// ...but notify us that it happened.
getWindow().setFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
// Note that flag changes must happen *before* the content view is set.
setContentView(R.layout.my_dialog_view);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// If we've received a touch notification that the user has touched
// outside the app, finish the activity.
if (MotionEvent.ACTION_OUTSIDE == event.getAction()) {
finish();
return true;
}
// Delegate everything else to Activity.
return super.onTouchEvent(event);
}
}
我认为通过抓住事件而不采取任何措施,您可以防止比赛结束。但是,奇怪的是,活动对话框的默认行为是当您触摸外部时 不 关闭自身。
(PS:代码使用WindowManager.LayoutParams)
我有一个活动是使用这个主题的。对话框样式,使其成为另一活动上的浮动窗口。但是,当我在对话框窗口外(在后台活动上)单击时,对话框关闭。我怎样才能阻止这种行为?
我正在尝试使用自定义toast和和。当我触摸任何地方(点击按钮,触摸布局……)时,我希望我的吐司消失,但它没有。 我读取了文件,并尝试在调用新Toast之前使用方法,但这并没有解决任何问题。有人能给我一个解决办法吗?
问题内容: 我有一个EditText用于输入的对话框。当我单击对话框上的“是”按钮时,它将验证输入,然后关闭对话框。但是,如果输入错误,我希望保留在同一对话框中。每次无论输入什么,当我单击“否”按钮时,都应自动关闭对话框。如何禁用此功能?顺便说一句,我在对话框上的按钮上使用了PositiveButton和NegativeButton。 问题答案: 编辑:这仅在API 8+上有效,如某些注释所述。
我使用keycloak来管理基于Java的Web应用程序的身份验证。 我配置了一个Kerberos用户联合,该联合在内部网络中运行良好。 从网络外部访问Web应用程序,我会得到以下登录对话框,而不是转发到keycloak登录表单。 有趣的是,转发适用于Firefox,但不适用Edge、Chrome、IE。 如何阻止登录对话框并直接转发到keycloak-login-form? 编辑:例如,是否可以
问题内容: 我正在开发一个android项目,当用户下载文件时该项目显示进度对话框。 但是,当用户触摸屏幕时,进度对话框将被关闭,而无需等待100%。我已经尝试使用此: 但这不起作用。 如何避免这种情况? 更新1: 似乎setCancelable(false)可以正常工作。非常感谢您的回答,但是当持久下载并用户决定放弃下载时,这将是不可能的,因为我已经停用了back keyCode: 我该如何解决
我希望在由Capybara旋转的Chrome实例中禁用从onbeforeunload生成的对话框。我有一个非常大的测试套件,修改每次访问/刷新以包含单击“离开”确认的代码是不切实际的。 我尝试在访问和刷新之前添加,虽然这是可行的,但它共享了必须修改所有访问和刷新调用的问题。 我还检查了是否有任何ChromeCLI选项可以添加来禁用此功能,但我没有找到任何相关内容。我检查了这里:https://pe