我已经看过几篇关于如何通过单击外部来关闭对话框的帖子。但有没有办法通过单击对话框窗口内部来获得相同的功能?
是否有任何侦听器侦听器会检测到对话窗口上的点击?
答案 0 :(得分:13)
覆盖Dialog.onTouchEvent(...)
会在屏幕上的任何位置捕获任何点按。通过点击任意位置来关闭对话框:
Dialog dialog = new Dialog(this) {
@Override
public boolean onTouchEvent(MotionEvent event) {
// Tap anywhere to close dialog.
this.dismiss();
return true;
}
};
答案 1 :(得分:3)
据推测,您希望在对话框的范围内的任何位置检测触摸事件。如果您正在创建自定义对话框(即将一组View
组合到某种布局View
中,然后将父View
设置为对话框的主要内容视图使用.setContentView()
)那么也许您可以简单地为该内容父onTouch
设置一个View
侦听器。此外,您可以使用mDialog.findViewById()
抓住视图,因此,如果您使用的是AlertDialog
,也许您可以确定用什么资源ID来抓住其主要布局{{1} }。
答案 2 :(得分:1)
如果对话框中有布局,则可以将其作为视图引用,并在其上放置onClickListener。因此,假设您的对话框具有自定义布局,并查看整个对话框,请获取对此的引用。
例如,假设一个对话框有一个名为mainll的LinearLayout,它包含您的自定义视图,您将:
LinearLayout ll - (LinearLayout) findViewById(R.id.mainll);
ll.setOnClickListener(...) { onClick()... }
然后,只要在LinearLayout中点击任何内容,它就会注册一个点击事件。
答案 3 :(得分:0)
当用户单击要关闭对话框的区域时,您始终可以创建自己的Dialog活动并调用finish()。
答案 4 :(得分:0)
这是一个解释如何在对话框中处理onTouch事件的示例。诀窍在于创建自定义侦听器。
http://about-android.blogspot.co.uk/2010/02/create-custom-dialog.html
答案 5 :(得分:0)
here i have taken my close icon ,if u need u can take anything like button
first of all u have implement to the class
class somethingclass Dialog implements View.OnClickListener
then set the event for particular
icon_close.setOnClickListener(this);
then override the class function
@Override
public void onClick(View v) {
if(R.id.icon_close==v.getId()){
dismiss();
}else
}
Note: if passible u can give dilaog.dismiss();