【问题标题】:Custom Dialog not showing View自定义对话框不显示视图
【发布时间】:2018-04-05 12:32:22
【问题描述】:

如果出现按钮单击自定义对话框,我做了一个简单的项目,但是当我认为其中缺少某些内容时? 当我单击按钮时出现 Toast 消息,但对话框没有显示,也没有发生错误并且应用程序没有崩溃。 源代码

private void layout() {
        toast("save");

        LayoutInflater dialoglayout = LayoutInflater.from(EditImageActivity.this);
         View dialogView = dialoglayout.inflate(R.layout.save_image_dialoge,null);

         my_dialog = new Dialog(EditImageActivity.this, R.style.CustomAlertDialog);
         my_dialog.setContentView(dialogView);
         WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
         lp.copyFrom(my_dialog.getWindow().getAttributes());
         lp.width = (int)(getResources().getDisplayMetrics().widthPixels*0.90);
         lp.height = (int)(getResources().getDisplayMetrics().heightPixels*0.90);
         my_dialog.getWindow().setAttributes(lp);
         final Button cancel = dialogView.findViewById(R.id.cancel);
         cancel.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 //cancel(true);
                 my_dialog.dismiss();
             }
         });
     }

【问题讨论】:

  • 你在哪里打电话给my_dialog.show()

标签: android dialog android-layoutparams


【解决方案1】:

您忘记拨打 my_dialog.show() 来显示您的my_dialog

private void layout() {
    toast("save");

    LayoutInflater dialoglayout = LayoutInflater.from(EditImageActivity.this);
     View dialogView = dialoglayout.inflate(R.layout.save_image_dialoge,null);

     my_dialog = new Dialog(EditImageActivity.this, R.style.CustomAlertDialog);
     my_dialog.setContentView(dialogView);
     WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
     lp.copyFrom(my_dialog.getWindow().getAttributes());
     lp.width = (int)(getResources().getDisplayMetrics().widthPixels*0.90);
     lp.height = (int)(getResources().getDisplayMetrics().heightPixels*0.90);
     my_dialog.getWindow().setAttributes(lp);
     final Button cancel = dialogView.findViewById(R.id.cancel);
     cancel.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             //cancel(true);
             my_dialog.dismiss();
         }
     });
     my_dialog.show();
 }

【讨论】:

  • 我接受了你的回答,对不起,我是 stackoverflow 的新手,所以不太了解,你能阅读我的新问题并帮助我吗?
【解决方案2】:

也调用这个方法

 my_dialog.show();

你的方法应该是这样的

private void layout() {
        toast("save");

        LayoutInflater dialoglayout = LayoutInflater.from(EditImageActivity.this);
         View dialogView = dialoglayout.inflate(R.layout.save_image_dialoge,null);

         my_dialog = new Dialog(EditImageActivity.this, R.style.CustomAlertDialog);
         my_dialog.setContentView(dialogView);
         WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
         lp.copyFrom(my_dialog.getWindow().getAttributes());
         lp.width = (int)(getResources().getDisplayMetrics().widthPixels*0.90);
         lp.height = (int)(getResources().getDisplayMetrics().heightPixels*0.90);
         my_dialog.getWindow().setAttributes(lp);
         final Button cancel = dialogView.findViewById(R.id.cancel);
         cancel.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 //cancel(true);
                 my_dialog.dismiss();
             }
         });

       my_dialog.show();
     }

【讨论】:

  • 谢谢,我忘记添加了。现在代码工作正常
  • 我很高兴它起作用了,请投票给其他人使用它的答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多