如何在Android中点击它来解雇Android中的Dialog?

时间:2012-02-07 21:18:26

标签: android dialog listener dismiss

我已经看过几篇关于如何通过单击外部来关闭对话框的帖子。但有没有办法通过单击对话框窗口内部来获得相同的功能?

是否有任何侦听器侦听器会检测到对话窗口上的点击?

6 个答案:

答案 0 :(得分:13)

覆盖Dialog.onTouchEvent(...)会在屏幕上的任何位置捕获任何点按。通过点击任意位置来关闭对话框:

Dialog dialog = new Dialog(this) {
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    // Tap anywhere to close dialog.
    this.dismiss();
    return true;
  }
};

此代码段无需调用dialogObject.setCanceledOnTouchOutside(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();