Android自定义Dialog以控制其位置和宽高

举报
yechaoa 发表于 2022/05/31 00:52:55 2022/05/31
1.7k+ 0 0
【摘要】 1.自定义Dialog类 import android.app.Dialog;import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.Window;import android.v...

1.自定义Dialog类


      import android.app.Dialog;
      import android.content.Context;
      import android.view.Gravity;
      import android.view.View;
      import android.view.Window;
      import android.view.WindowManager;
      /**
       * Created by yechaoa on 2016/10/22.
       */
      public class MyDialog extends Dialog {
         private Window window = null;
         public MyDialog(Context context, boolean cancelable,
       OnCancelListener cancelListener) {
             super(context, cancelable, cancelListener);
          }
         public MyDialog(Context context, int theme) {
             super(context, theme);
          }
         public MyDialog(Context context) {
             super(context);
          }
         public void setView(View view) {
              setContentView(view);
          }
         public void setView(int id) {
              setContentView(id);
          }
         public void setProperty(int x, int y, int w, int h) {
              window = getWindow();//得到对话框的窗口.
              WindowManager.LayoutParams wl = window.getAttributes();
              wl.x = x;//设置对话框的位置.0为中间
              wl.y = y;
              wl.width = w;
              wl.height = h;
              wl.alpha = 1f;// 设置对话框的透明度,1f不透明
              wl.gravity = Gravity.CENTER;//设置显示在中间
              window.setAttributes(wl);
          }
      }
  
 


           <style name="myDialog" parent="@android:style/Theme.Dialog">
              <!--dialog的背景,此处是一个圆角白底的xml文件,也可以是.9-->
              <item name="android:windowBackground">@drawable/corners_bg_normal</item>
              <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
              <item name="android:windowFrame">@null</item><!--边框-->
              <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
              <item name="android:windowIsTranslucent">true</item><!--半透明-->
              <item name="android:windowNoTitle">true</item><!--无标题-->
              <item name="android:backgroundDimEnabled">true</item><!--模糊-->
          </style>
  
 


      <?xml version="1.0" encoding="utf-8"?>
      <shape xmlns:android="http://schemas.android.com/apk/res/android">
          <corners android:radius="10dp"/><!--圆角大小-->
          <solid android:color="@color/white"/>
          <stroke android:color="#cbcbcb" android:width="1px"/>
      </shape>
  
 


     	final MyDialog dialog=new MyDialog(MainActivity.this, R.style.myDialog);
             final View view = View.inflate(ManifestEditActivity.this, R.layout.dialog_submit,null);
              dialog.setView(view);
              dialog.setProperty(0,0, 600, 400);//设置坐标和宽高
              dialog.setCanceledOnTouchOutside(true);
              dialog.show();
              Button dialogCancel= (Button) view.findViewById(R.id.dialog_cancel);
              dialogCancel.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
                      dialog.dismiss();
                  }
              });
              Button dialogConfirm= (Button) view.findViewById(R.id.dialog_confirm);
              dialogConfirm.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
                    //doSomething
                  }
              });
  
 

文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yechaoa/article/details/53836891

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。