如何以编程方式隐藏和显示android对话框

如何以编程方式隐藏和显示android对话框,android,android-layout,Android,Android Layout,当用户单击“创建新游戏”时,我会向他显示一个对话框。我试图在按钮事件为“ACTION\u DOWN”时隐藏对话框,并在事件为“ACTION\u UP”时显示它 正如您在下面的代码中所看到的,我试图做的是当用户按下eye按钮时隐藏对话框,当他/她释放它时再次显示它。我试着玩弄透明度,但只是让背景不可见,而不是所有的元素 private void dialogNewGame(最终上下文){ final Dialog filterDialog=新建对话框(上下文,R.style.NewGameDial

当用户单击“创建新游戏”时,我会向他显示一个对话框。我试图在按钮事件为“ACTION\u DOWN”时隐藏对话框,并在事件为“ACTION\u UP”时显示它

正如您在下面的代码中所看到的,我试图做的是当用户按下eye按钮时隐藏对话框,当他/她释放它时再次显示它。我试着玩弄透明度,但只是让背景不可见,而不是所有的元素

private void dialogNewGame(最终上下文){
final Dialog filterDialog=新建对话框(上下文,R.style.NewGameDialogStyle);
filterDialog.setContentView(R.layout.dailog\u new\u游戏);
filterDialog.setCancelable(真);
filterDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_父项,LinearLayout.LayoutParams.WRAP_内容);
filterDialog.getWindow().setGravity(Gravity.CENTER);
ImageButton eyeButton=filterDialog.findViewById(R.id.eye);
setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图、运动事件){
if(event.getAction()==MotionEvent.ACTION\u向下){
filterDialog.disclose();
}else if(event.getAction()==MotionEvent.ACTION\u UP){
对话新游戏(上下文);
}
返回true;
}
});
}
如何在按下/释放按钮时获得隐藏/显示功能?

使用
hide()
show()
将更改对话框的可见性。但是,如果在
对话框
隐藏时关闭应用程序,则会发生窗口泄漏错误。您需要在适当的生命周期结束方法(如
onDestroy()
)中正确地
dismis()
对话框

使用
hide()
show()
将更改对话框的可见性。但是,如果在
对话框
隐藏时关闭应用程序,则会发生窗口泄漏错误。您需要在适当的生命周期结束方法(如
onDestroy()
)中正确地
dismis()
对话框


你好,Kyrylo,你有机会读到android对话框是如何工作的吗@MartinMarconcini是的,我在这里找到了答案,但我没有找到答案,这就是我来这里的原因你好,Kyrylo,你有机会读一下android对话框是如何工作的吗@是的,我找到了,但我没有找到我的答案这就是为什么我在这里欣赏,完美,作为一种魅力,我会在几分钟内接受。欣赏,完美,作为一种魅力,我会在几分钟内接受。
private Dialog filterDialog;

private void dialogNewGame(final Context context) {
    filterDialog = new Dialog(context, R.style.NewGameDialogStyle);
    filterDialog.setContentView(R.layout.dailog_new_game);
    filterDialog.setCancelable(true);
    filterDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    filterDialog.getWindow().setGravity(Gravity.CENTER);

    ImageButton eyeButton = filterDialog.findViewById(R.id.eye);
    eyeButton.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                filterDialog.hide();
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                dialogNewGame(context); //Showing dialog
            }
            return true;
        }
    });
}

//Handle dismiss
@Override
public void onDestroy() {
    super.onDestroy();
    if (filterDialog != null)
        filterDialog.dismiss();
}